matplotlib學習筆記(三)
柱狀圖
柱狀圖用其每根柱子的長度表示值的大小,它們通常用來比較兩組或多組值。下面的程序從文件中讀入中國人口的年齡分布數據,並使用柱狀圖比較男性和女性的年齡分布。
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學習筆記(三)