python畫圖

當我們獲取完數據之後,一般來說數據可視化呈現的最基礎圖形就是:柱狀圖、水平條形圖、折線圖等等,在python的matplotlib庫中分別可用bar、barh、plot函數來構建它們,再使用xticks與yticks(設置座標軸刻度)、xlabel與ylabel(設置座標軸標籤)、title(標題)、legend(圖例)、xlim與ylim(設置座標軸數據範圍)、grid(設置網格線)等命令來裝飾圖形,讓它更明晰與美觀,但是對於數據標籤(即在圖形中的每一個點或條形位置上標註出相應數值),卻沒有直接的命令導出。我們看很多python可視化做出的柱狀圖等等,在柱子數量不多的條件下,沒有數據標籤,只有光禿禿的一個個柱子,這樣就使得圖形缺了些什麼。事實上,在python的matplotlib中有在圖形中添加文字說明的命令——text,我們就可以利用這個命令,在圖中每個單位要素中添加相應文字,來構造數字標籤。
所爬取數據爲例,經過numpy得到了不同課程類別下的平均學習人數,如圖:


v2-436583cccc6aaf0b95703e570b42cf45_b.png
plt.figure(figsize=(10,6))
#設置x軸柱子的個數
x=np.arange(14)+1 #課程品類數量已知爲14,也可以用len(ppv3.index)
#設置y軸的數值,需將numbers列的數據先轉化爲數列,再轉化爲矩陣格式
y=np.array(list(ppv3['numbers']))
xticks1=list(ppv3.index) #構造不同課程類目的數列
#畫出柱狀圖
plt.bar(x,y,width = 0.35,align='center',color = 'c',alpha=0.8)
#設置x軸的刻度,將構建的xticks代入,同時由於課程類目文字較多,在一塊會比較擁擠和重疊,因此設置字體和對齊方式
plt.xticks(x,xticks1,size='small',rotation=30)
#x、y軸標籤與圖形標題
plt.xlabel('課程主題類別')
plt.ylabel('number')
plt.title('不同課程類別的平均學習人數')
**#設置數字標籤**
**for a,b in zip(x,y):**
** plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=7)**
#設置y軸的範圍
plt.ylim(0,3700)
plt.show()

最終得到的圖形爲:


不同類別學習人數.png

着重講一下如何設置數字標籤
#設置數字標籤

for a,b in zip(x,y):
    plt.text(a, b+0.05, '%.0f' % b, ha='center', va= 'bottom',fontsize=7)

首先,前邊設置的x、y值其實就代表了不同柱子在圖形中的位置(座標),通過for循環找到每一個x、y值的相應座標——a、b,再使用plt.text在對應位置添文字說明來生成相應的數字標籤,而for循環也保證了每一個柱子都有標籤。
其中,a, b+0.05表示在每一柱子對應x值、y值上方0.05處標註文字說明, '%.0f' % b,代表標註的文字,即每個柱子對應的y值, ha='center', va= 'bottom'代表horizontalalignment(水平對齊)、verticalalignment(垂直對齊)的方式,fontsize則是文字大小。
條形圖、折線圖也是如此設置,餅圖則在pie命令中有數據標籤的對應參數。對於累積柱狀圖、雙軸柱狀圖則需要用兩個for循環,同時通過a與b的不同加減來設置數據標籤位置,比如在本文另一文章[《雙十一預售戰下的電商風雲》](https://zhuanlan.zhihu.com/p/23492721
) ,如圖:


電商平臺商品評價.png


其命令爲:


電商代碼.png


作者:博觀厚積
鏈接:http://www.jianshu.com/p/5ae17ace7984
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章