python画图--柱状图


有两种柱状图(一种为histogram, 另一种为bar chart)

一、bar chart

主要用的方法为:

atplotlib.pyplot.``bar(left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs)

参数说明:

left: 每一个柱形左侧的X坐标

height:每一个柱形的高度

width: 柱形之间的宽度

bottom: 柱形的Y坐标

color: 柱形的颜色

下面是代码示例:

# -*- coding: utf-8 -*-
import numpy as np  
import matplotlib.mlab as mlab  
import matplotlib.pyplot as plt  

X=[0,1,2,3,4,5]
Y=[222,42,455,664,454,334]  
fig = plt.figure()
plt.bar(X,Y,0.4,color="green")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.title("bar chart")


plt.show()  
plt.savefig("barChart.jpg")

结果如下:

下面是另一个例子:

# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl

def draw_bar(labels,quants):
    width = 0.4
    ind = np.linspace(0.5,9.5,10)
    # make a square figure
    fig = plt.figure(1)
    ax  = fig.add_subplot(111)
    # Bar Plot
    ax.bar(ind-width/2,quants,width,color='green')
    # Set the ticks on x-axis
    ax.set_xticks(ind)
    ax.set_xticklabels(labels)
    # labels
    ax.set_xlabel('Country')
    ax.set_ylabel('GDP (Billion US dollar)')
    # title
    ax.set_title('Top 10 GDP Countries', bbox={'facecolor':'0.8', 'pad':5})
    plt.grid(True)
    plt.show()
    plt.savefig("bar.jpg")
    plt.close()

labels   = ['USA', 'China', 'India', 'Japan', 'Germany', 'Russia', 'Brazil', 'UK', 'France', 'Italy']

quants   = [15094025.0, 11299967.0, 4457784.0, 4440376.0, 3099080.0, 2383402.0, 2293954.0, 2260803.0, 2217900.0, 1846950.0]

draw_pie(labels,quants)

结果如下:

下面是官方文档有关于bar chart的说明:

链接:http://matplotlib.org/api/pyplot_api.html

matplotlib.pyplot. bar ( left, height, width=0.8, bottom=None, hold=None, data=None, **kwargs )

Make a bar plot.

Make a bar plot with rectangles bounded by:

left, left + width, bottom, bottom + height (left, right, bottom and top edges)

Parameters: **left** : sequence of scalars > the x coordinates of the left sides of the bars **height** : sequence of scalars > the heights of the bars **width** : scalar or array-like, optional > the width(s) of the bars default: 0.8 **bottom** : scalar or array-like, optional > the y coordinate(s) of the bars default: None **color** : scalar or array-like, optional > the colors of the bar faces **edgecolor** : scalar or array-like, optional > the colors of the bar edges **linewidth** : scalar or array-like, optional > width of bar edge(s). If None, use default linewidth; If 0, don’t draw > edges. default: None **tick_label** : string or array-like, optional > the tick labels of the bars default: None **xerr** : scalar or array-like, optional > if not None, will be used to generate errorbar(s) on the bar chart default: > None **yerr** : scalar or array-like, optional > if not None, will be used to generate errorbar(s) on the bar chart default: > None **ecolor** : scalar or array-like, optional > specifies the color of errorbar(s) default: None **capsize** : scalar, optional > determines the length in points of the error bar caps default: None, which > will take the value from the`errorbar.capsize` > [`rcParam`](http://matplotlib.org/api/matplotlib_configuration_api.html#matplotlib.rcParams > "matplotlib.rcParams"). **error_kw** : dict, optional > dictionary of kwargs to be passed to errorbar method. ecolor and capsize may > be specified here rather than as independent kwargs. **align** : {‘edge’, ‘center’}, optional > If ‘edge’, aligns bars by their left edges (for vertical bars) and by their > bottom edges (for horizontal bars). If ‘center’, interpret the `left` > argument as the coordinates of the centers of the bars. To align on the > align bars on the right edge pass a negative `width`. **orientation** : {‘vertical’, ‘horizontal’}, optional > The orientation of the bars. **log** : boolean, optional > If true, sets the axis to be log scale. default: False
Returns: **bars** : matplotlib.container.BarContainer > Container with all of the bars + errorbars

See also

barh Plot a horizontal bar plot.

Notes

In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, the following arguments are replaced by data[ ]:

  • All arguments with the following names: ‘height’, ‘color’, ‘ecolor’, ‘edgecolor’, ‘bottom’, ‘tick_label’, ‘width’, ‘yerr’, ‘xerr’, ‘linewidth’, ‘left’.

Additional kwargs: hold = [True|False] overrides default hold state

Examples

Example: A stacked bar chart.

(Source code, png, hires.png, pdf)

二、histogram

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">主要用的的方法为:</span>

plt.hist()

先来了解一下hist的参数:

matplotlib.pyplot.hist(  
x, bins=10, range=None, normed=False,   
weights=None, cumulative=False, bottom=None,   
histtype=u'bar', align=u'mid', orientation=u'vertical',   
rwidth=None, log=False, color=None, label=None, stacked=False,   
hold=None, **kwargs)

x : (n,) array or sequence of (n,) arrays

这个参数是指定每个bin(箱子)分布的数据,对应x轴

bins : integer or array_like, optional

这个参数指定bin(箱子)的个数,也就是总共有几条条状图

normed : boolean, optional

If True, the first element of the return tuple will be the counts normalized to form a probability density, i.e.,n/(len(x)dbin)`

这个参数指定密度,也就是每个条状图的占比例比,默认为1

color : color or array_like of colors or None, optional

这个指定条状图的颜色

代码如下:

# -*- coding: utf-8 -*-
import numpy as np  
import matplotlib.mlab as mlab  
import matplotlib.pyplot as plt  


# 数据  
mu = 100 # mean of distribution  
sigma = 15 # standard deviation of distribution  
x = mu + sigma * np.random.randn(10000)  

num_bins = 50  
# the histogram of the data  
n, bins, patches = plt.hist(x, num_bins, normed=1, facecolor='blue', alpha=0.5)  

# add a 'best fit' line  
y = mlab.normpdf(bins, mu, sigma)  
plt.plot(bins, y, 'r--')  
plt.xlabel('Smarts')  
plt.ylabel('Probability')  
plt.title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')  

# Tweak spacing to prevent clipping of ylabel  
plt.subplots_adjust(left=0.15)  
plt.show()  
plt.savefig("hist.jpg")

结果如下:

以下是官方文档的描述:

链接:http://matplotlib.org/api/pyplot_api.html

matplotlib.pyplot. hist ( x, bins=10, range=None, normed=False, weights=None, cumulative=False, bottom=None, histtype='bar', align='mid', orientation='vertical', rwidth=None, log=False, color=None, label=None, stacked=False, hold=None, data=None, **kwargs )

Plot a histogram.

Compute and draw the histogram of x. The return value is a tuple (n, bins, patches) or ([n0, n1, ...], bins, [patches0, patches1,...]) if the input contains multiple data.

Multiple data can be provided via x as a list of datasets of potentially different length ([x0, x1, ...]), or as a 2-D ndarray in which each column is a dataset. Note that the ndarray form is transposed relative to the list form.

Masked arrays are not supported at present.

Parameters: **x** : (n,) array or sequence of (n,) arrays > Input values, this takes either a single array or a sequency of arrays which > are not required to be of the same length **bins** : integer or array_like, optional > If an integer is given, `bins + 1` bin edges are returned, consistently with > `numpy.histogram()` for numpy version >= 1.3. > > Unequally spaced bins are supported if `bins` is a sequence. > > default is 10 **range** : tuple or None, optional > The lower and upper range of the bins. Lower and upper outliers are ignored. > If not provided, `range` is (x.min(), x.max()). Range has no effect if > `bins` is a sequence. > > If `bins` is a sequence or `range` is specified, autoscaling is based on the > specified bin range instead of the range of x. > > Default is `None` **normed** : boolean, optional > If `True`, the first element of the return tuple will be the counts > normalized to form a probability density, i.e.,`n/(len(x)`dbin)`, i.e., the > integral of the histogram will sum to 1. If stacked is also True, the sum of > the histograms is normalized to 1. > > Default is `False` **weights** : (n, ) array_like or None, optional > An array of weights, of the same shape as `x`. Each value in `x` only > contributes its associated weight towards the bin count (instead of 1). If > `normed` is True, the weights are normalized, so that the integral of the > density over the range remains 1. > > Default is `None` **cumulative** : boolean, optional > If `True`, then a histogram is computed where each bin gives the counts in > that bin plus all bins for smaller values. The last bin gives the total > number of datapoints. If `normed` is also `True` then the histogram is > normalized such that the last bin equals 1. If `cumulative` evaluates to > less than 0 (e.g., -1), the direction of accumulation is reversed. In this > case, if `normed` is also `True`, then the histogram is normalized such that > the first bin equals 1. > > Default is `False` **bottom** : array_like, scalar, or None > Location of the bottom baseline of each bin. If a scalar, the base line for > each bin is shifted by the same amount. If an array, each bin is shifted > independently and the length of bottom must match the number of bins. If > None, defaults to 0. > > Default is `None` **histtype** : {‘bar’, ‘barstacked’, ‘step’, ‘stepfilled’}, optional > The type of histogram to draw. > > * ‘bar’ is a traditional bar-type histogram. If multiple data are given > the bars are aranged side by side. > * ‘barstacked’ is a bar-type histogram where multiple data are stacked on > top of each other. > * ‘step’ generates a lineplot that is by default unfilled. > * ‘stepfilled’ generates a lineplot that is by default filled. > > > Default is ‘bar’ **align** : {‘left’, ‘mid’, ‘right’}, optional > Controls how the histogram is plotted. > >> * ‘left’: bars are centered on the left bin edges. >> * ‘mid’: bars are centered between the bin edges. >> * ‘right’: bars are centered on the right bin edges. >> > > Default is ‘mid’ **orientation** : {‘horizontal’, ‘vertical’}, optional > If ‘horizontal’, > [`barh`](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.barh > "matplotlib.pyplot.barh") will be used for bar-type histograms and the > bottom kwarg will be the left edges. **rwidth** : scalar or None, optional > The relative width of the bars as a fraction of the bin width. If `None`, > automatically compute the width. > > Ignored if `histtype` is ‘step’ or ‘stepfilled’. > > Default is `None` **log** : boolean, optional > If `True`, the histogram axis will be set to a log scale. If `log` is `True` > and `x` is a 1D array, empty bins will be filtered out and only the non- > empty (`n`, `bins`, `patches`) will be returned. > > Default is `False` **color** : color or array_like of colors or None, optional > Color spec or sequence of color specs, one per dataset. Default (`None`) > uses the standard line color sequence. > > Default is `None` **label** : string or None, optional > String, or sequence of strings to match multiple datasets. Bar charts yield > multiple patches per dataset, but only the first gets the label, so that the > legend command will work as expected. > > default is `None` **stacked** : boolean, optional > If `True`, multiple data are stacked on top of each other If `False` > multiple data are aranged side by side if histtype is ‘bar’ or on top of > each other if histtype is ‘step’ > > Default is `False`
Returns: **n** : array or list of arrays > The values of the histogram bins. See **normed** and **weights** for a > description of the possible semantics. If input **x** is an array, then this > is an array of length **nbins**. If input is a sequence arrays `[data1, > data2,..]`, then this is a list of arrays with the values of the histograms > for each of the arrays in the same order. **bins** : array > The edges of the bins. Length nbins + 1 (nbins left edges and right edge of > last bin). Always a single array even when multiple data sets are passed in. **patches** : list or list of lists > Silent list of individual patches used to create the histogram or list of > such list if multiple input datasets.

See also

hist2d 2D histograms

Notes

In addition to the above described arguments, this function can take a data keyword argument. If such a data argument is given, the following arguments are replaced by data[ ]:

  • All arguments with the following names: ‘weights’, ‘x’.

Additional kwargs: hold = [True|False] overrides default hold state

Examples

(Source code, png, hires.png, pdf)

python画图--柱状图介绍到这里,更多Python学习 请参考编程字典Python教程和问答部分,谢谢大家对编程字典的支持。


原文链接:https://blog.csdn.net/jenyzhang/article/details/52047557?ops_request_misc=&request_id=&biz_id=102&utm_term=python&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-6-52047557.nonecase&spm=1018.2226.3001.4187