Get values from matplotlib AxesSubplot

前端 未结 1 1258
别那么骄傲
别那么骄傲 2020-12-04 02:35

I\'d like to get values from matplotlib.axes.AxesSubplot which is returned from pandas.Series.hist method. Is there any method to do so? I couldn\'t find the at

相关标签:
1条回答
  • 2020-12-04 02:54

    As xnx pointed out in comments, this isn't as easily accessible as if you used plt.hist. However, if you really want to use the pandas hist function, you can get this information, from the patches that are added to the hist AxesSubplot when you call serie.hist.

    Here's a function to loop through the patches, and return the bin edges and histogram counts:

    import pandas as pd
    import matplotlib.pyplot as plt
    
    serie = pd.Series([0.0,950.0,-70.0,812.0,0.0,-90.0,0.0,0.0,-90.0,0.0,-64.0,208.0,0.0,-90.0,0.0,-80.0,0.0,0.0,-80.0,-48.0,840.0,-100.0,190.0,130.0,-100.0,-100.0,0.0,-50.0,0.0,-100.0,-100.0,0.0,-90.0,0.0,-90.0,-90.0,63.0,-90.0,0.0,0.0,-90.0,-80.0,0.0,])
    hist = serie.hist()
    
    def get_hist(ax):
        n,bins = [],[]
        for rect in ax.patches:
            ((x0, y0), (x1, y1)) = rect.get_bbox().get_points()
            n.append(y1-y0)
            bins.append(x0) # left edge of each bin
        bins.append(x1) # also get right edge of last bin
    
        return n,bins
    
    n, bins = get_hist(hist)
    
    print n
    print bins
    
    plt.show()
    

    Here's the output of n and bins:

    [36.0, 1.0, 3.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0]                          # n
    [-100.0, 5.0, 110.0, 215.0, 320.0, 425.0, 530.0, 635.0, 740.0, 845.0, 950.0] # bins
    

    And here's the histogram plot to check:

    0 讨论(0)
提交回复
热议问题