1、使用Matplotlib生成數據圖:是Python上的一個2D繪圖庫,它能夠在跨平臺上邊出不少高質量的圖像。
一、Pycharm安裝Matplotlib庫
(1)點擊菜單上的「file」 -> 「settings」:
(2)選中你的項目(好比thisyan Project),選中其下的「Project Interpreter」:
(3)點擊最右邊的"+":
(4)出現以下界面後,按照如圖所示單擊:
函數
(5)完成:
二、折線圖 -------- plot
(1)簡單的折線圖:
import matplotlib.pyplot as plt
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
plt.plot(x_data,y_data)
plt.show()
在matplotlib面向對象的繪圖庫中,pyplot是一個方便的接口。
plot()函數:支持建立單條折線的折線圖,也支持建立包含多條折線的複式折線圖----只要在調用plot()時傳入多個分別表明X軸和Y軸數據的list列表便可
(2)複式折線圖:
import matplotlib.pyplot as plt
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
y_data2 = [52000,54200,51500,58300,56800,59500,62700]
plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
plt.show()
注:
color ------ 指定折線的顏色
linewidth -------- 指定折線的寬度
linestyle -------- 指定折線的樣式
‘ - ’ : 表示實線
’ - - ‘ :表示虛線
’ : ‘:表示點線
’ - . ‘ :表示短線、點相間的虛線
(3)管理圖例:
對於複式折線圖,應該爲每條折線添加圖例,能夠經過legend()函數來實現。該函數可傳入兩個list參數,其中第一個list參數(handles參數)用於引用折線圖上的每條折線;第二個list參數(labels)表明爲每條折線所添加的圖例
import matplotlib.pyplot as plt
import matplotlib.font_manager as fm #字體管理器
x_data = ['2011','2012','2013','2014','2015','2016','2017']
y_data = [58000,60200,63000,71000,84000,90500,107000]
y_data2 = [52000,54200,51500,58300,56800,59500,62700]
ln1, = plt.plot(x_data,y_data,color='red',linewidth=2.0,linestyle='--')
ln2, = plt.plot(x_data,y_data2,color='blue',linewidth=3.0,linestyle='-.')
my_font = fm.FontProperties(fname="/usr/share/fonts/wqy-microhei/wqy-microhei.ttc")
plt.title("電子產品銷售量",fontproperties=my_font) #設置標題及字體
plt.legend(handles=[ln1,ln2],labels=['鼠標的年銷量','鍵盤的年銷量'],prop=my_font)
ax = plt.gca()
ax.spines['right'].set_color('none') # right邊框屬性設置爲none 不顯示
ax.spines['top'].set_color('none') # top邊框屬性設置爲none 不顯示
plt.show()
字體
(4)管理多個子圖:
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.gridspec as gridspec
import matplotlib.font_manager as fm #字體管理器
my_font = fm.FontProperties(fname="/usr/share/fonts/wqy-microhei/wqy-microhei.ttc")
plt.figure()
x_data = np.linspace(-np.pi,np.pi,64,endpoint=True)
gs = gridspec.GridSpec(2,3) #將繪圖區分紅兩行三列
ax1 = plt.subplot(gs[0,:])#指定ax1佔用第一行(0)整行
ax2 = plt.subplot(gs[1,0])#指定ax2佔用第二行(1)的第一格(第二個參數爲0)
ax3 = plt.subplot(gs[1,1:3])#指定ax3佔用第二行(1)的第2、三格(第二個參數爲1:3)
#繪製正弦曲線
ax1.plot(x_data,np.sin(x_data))
ax1.spines['right'].set_color('none')
ax1.spines['top'].set_color('none')
ax1.spines['bottom'].set_position(('data',0))
ax1.spines['left'].set_position(('data',0))
ax1.set_title('正弦曲線',fontproperties=my_font)
#繪製餘弦曲線
ax2.plot(x_data,np.cos(x_data))
ax2.spines['right'].set_color('none')
ax2.spines['top'].set_color('none')
ax2.spines['bottom'].set_position(('data',0))
ax2.spines['left'].set_position(('data',0))
ax2.set_title('餘弦曲線',fontproperties=my_font)
#繪製正切曲線
ax3.plot(x_data,np.tan(x_data))
ax3.spines['right'].set_color('none')
ax3.spines['top'].set_color('none')
ax3.spines['bottom'].set_position(('data',0))
ax3.spines['left'].set_position(('data',0))
ax3.set_title('正切曲線',fontproperties=my_font)
plt.show()
this