1. 程式人生 > >matplotlib學習筆記(三)

matplotlib學習筆記(三)

imp light 參數設置 src 相對 idt rand rgb 大小

柱狀圖

柱狀圖用其每根柱子的長度表示值的大小,它們通常用來比較兩組或多組值。下面的程序從文件中讀入中國人口的年齡分布數據,並使用柱狀圖比較男性和女性的年齡分布。

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt("china_population.txt")
width = (data[1,0] - data[0,0])*0.4 

plt.figure(figsize=(8,5))

plt.bar(data[:,0]-width, data[:,1]/1e7, width, color="b", label=u"男") 
plt.bar(data[:,0], data[:,2]/1e7, width, color="r", label=u"女") 
plt.xlim(-width, 100)
plt.xlabel(u"年齡")
plt.ylabel(u"人口(千萬)")
plt.legend()

plt.show()

讀入的數據中,第0列為年齡,它將作為柱狀圖的橫坐標。首先計算柱狀圖中每根柱子 的寬度,因為要在每個年齡段上繪制兩根柱子,因此柱子的寬度應該小於年齡段的二分之 一。這裏以年齡段的0.4倍作為柱子的寬度。

bar()的第一個參數是柱狀圖的橫坐標(柱子的左邊緣)列表,第二個是縱坐標列表,後面是柱子的寬度和顏色。

技術分享圖片


散點圖

使用plot()繪圖時,如果指定樣式參數為僅繪制數據點,那麽所繪制的就是一幅散列圖。 例如:

plt.plot(np.random.random(100),np.random.random(100),"o")

但是這種方法無法為每個點設置樣式,scatter方法可以

plt.figure(figsize=(8,4))
x = np.random.random(100)
y = np.random.random(100)
plt.scatter(x, y, s=x*1000, c=y, marker=(5, 1), alpha=0.8, lw=2, facecolors="none")
plt.xlim(0,1)
plt.ylim(0,1)

plt.show()

效果圖

技術分享圖片

scatter()的前兩個參數是數組,分別指定每個點的X軸和Y軸的坐標。s參數指定點的大 小,值和點的面積成正比。它可以是一個數,定所有點的大小;也可以是數組,分別對每個點指定大小。
c參數指定每個點的顏色,可以是數值或數組。這裏使用一維數組為每個點指定了一個數值。通過顏色映射表,每個數值都會與一個顏色相對應。默認的顏色映射表中藍色與最小值對應,紅色與最大值對應。當c參數是形狀為(N,3)或(N,4)的二維數組時,則直接表示每個點的RGB顏色。
marker參數設置點的形狀,可以是個表示形狀的字符串,也可以是表示多邊形的兩個元素的元組,第一個元素表示多邊形的邊數,

第二個元素表示多邊形的樣式,取值範圍為0、1、2、3。0表示多邊形,1表示星形,2表示放射形,3表示忽略邊數而顯示為圓形。
最後,通過alpha參數設置點的透明度,通過lw參數設置線寬,lw是line width的縮寫。 facecolors參數為“none”時,表示散列點沒有填充色。

matplotlib學習筆記(三)