python畫圖--柱狀圖
在上一篇(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 npimport matplotlib.pyplot as pltimport matplotlib as mpldef 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 theerrorbar.capsize rcParam. 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[<arg>]: 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 |