Matplotlib:plt.text()給圖形添加數據標簽


1、數據可視化呈現的最基礎圖形就是:柱狀圖、水平條形圖、折線圖等等;  

  在python的matplotlib庫中分別可用bar、barh、plot函數來構建它們,再使用xticks與yticks(設置坐標軸刻度)、
  xlabel與ylabel(設置坐標軸標簽)、title(標題)、legend(圖例)、xlim與ylim(設置坐標軸數據范圍)、
  grid(設置網格線)等命令來裝飾圖形
import matplotlib.pyplot as plt
import numpy as np
#創建帶數字標簽的直方圖
numbers = list(range(1,11))
#np.array()將列表轉換為存儲單一數據類型的多維數組
x = np.array(numbers)
y = np.array([a**2 for a in numbers])
plt.bar(x,y,width=0.5,align='center',color='c')
plt.title('Square Numbers',fontsize=24)
plt.xlabel('Value',fontsize=14)
plt.ylabel('Square of Value',fontsize=14)
plt.tick_params(axis='both',labelsize=14)
plt.axis([0,11,0,110])
for a,b in zip(x,y):
    plt.text(a,b+0.1,'%.0f'%b,ha = 'center',va = 'bottom',fontsize=7)
plt.savefig('images\squares.png')
plt.show()
首先,前邊設置的x、y值其實就代表了不同柱子在圖形中的位置(坐標),通過for循環找到每一個x、y值 的相應坐標——a、b,再使用plt.text在對應位置添文字說明來生成相應的數字標簽,而for循環也保證了每 一個柱子都有標簽。其中,a, b+0.05表示在每一柱子對應x值、y值上方0.05處標注文字說明,'%.0f' % b, 代表標注的文字,即每個柱子對應的y值,其中0表示不顯示小數后面的數值,1就表示顯示小數后面一位,以此類推; ha='center', va= 'bottom'代表horizontalalignment(水平對齊)、 verticalalignment(垂直對齊)的方式,fontsize則是文字大小。條形圖、折線圖也是如此設置,餅圖則在 pie命令中有數據標簽的對應參數。對於累積柱狀圖、雙軸柱狀圖則需要用兩個for循環,同時通過a與b的 不同加減來設置數據標簽位置。
2、用函數plt.annotate()給折線圖折點添加坐標
#模塊pyplot包含很多生成圖表的函數
import matplotlib.pyplot as plt
import numpy as np
input_values = [1,2,3,4,5,6]
squares = [1,4,9,16,25,36]
#plot()繪制折線圖
plt.plot(input_values,squares,linewidth=5)
#np.array()將列表轉換為存儲單一數據類型的多維數組
x = np.array(input_values)
y = np.array(squares)
#annotate()給折線點設置坐標值
for a,b in zip(x,y):
    plt.annotate('(%s,%s)'%(a,b),xy=(a,b),xytext=(-20,10),
                 textcoords='offset points')
#設置標題
plt.title('Square Numbers',fontsize=24)
plt.xlabel('Value',fontsize=14)
plt.ylabel('Square of Value',fontsize=14)
#設置刻度的大小,both代表xy同時設置
plt.tick_params(axis='both',labelsize=14)
#show()打開matplotlib查看器,並顯示繪制的圖形
plt.show()

 

 





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM