Matplotlib是一個Python 2D繪圖庫,可以生成各種硬拷貝格式和跨平臺交互式環境的出版物質量數據。Matplotlib可用於Python腳本,Python和IPython shell,Jupyter筆記本,Web應用程序服務器和四個圖形用戶界面工具包。
話不多少,直接上乾貨,跟大家分享下我使用matplotlib繪製一些圖形的方法:
#導入模塊 import matplotlib.pyplot as plt import random import matplotlib import numpy as np # #傳入x,y通過plot方法實現畫圖 # plt.plot([1,0,9],[4,5,6]) # #在執行程序的時候展示圖形 # plt.show() #折線圖的繪製 '''折線圖的繪製''' # x = range(1,8) #x軸位置 # y = [17,17,18,11,15,11,113] #y軸位置 # plt.plot(x,y) # plt.show() '''折線的顏色和形狀的設置''' # x = range(1,8) #x軸的位置 # y = [17,17,18,11,15,11,113] # y軸的位置 # # #基礎屬性設置,color爲顏色,alpha爲折現透明度(0-1),linestyle代表折線樣式,linewidth爲折線的寬度設置。 # plt.plot(x,y,color = 'red',alpha = 0.5,linestyle = ':',linewidth = 3) # plt.show() '''折點樣式設置''' # x = range(1,8) #設置x軸位置 # y = [17,17,18,11,15,11,113] # plt.plot(x,y,marker = '|') #傳入x,y值,marker代表折現點,在這裏設置爲折現點爲‘o’ # plt.show()#展示圖形 '''設置的圖片的大小與保存''' # x = range(2,26,2)#設置x軸位置 # # y = [random.randint(15,30) for i in x] #設置y軸,這裏用到了一個列表生成式的方法。 # # plt.figure(figsize=(20,8),dpi=80)#設置畫布大小,figsize代表畫布的寬和高,dpi代表分辨率,缺省值爲80 # # plt.plot(x,y)#傳入x,y # plt.show()#展示圖形 # # plt.savefig('./t1.png') #保存繪製的圖形,並命名爲t1.png '''繪製x軸和y軸的刻度''' # x = range(2,26,2) #x軸位置 # y = [random.randint(15,30) for i in x ] #y軸位置 # plt.figure(figsize=(20,8),dpi = 80)#畫布大小爲20,8、分辨率爲80 # # #設置x軸刻度 # #plt.xticks(x) # #plt.xticks(range(1,25)) # #plt.show() # # #設置y軸刻度(2種方法,直接傳y值進去或者使用range生成 # plt.yticks(y) # #plt.yticks(range(min(y),max(y)+1)) # #plt.show() # # #構造x軸刻度標籤 # x_ticks_label = ["{}:00".format(i) for i in x] # #rotation=45:設置字體傾斜45度 # plt.xticks(x,x_ticks_label,rotation = 45) # #構造y軸刻度標籤 # y_ticks_label = ["{}℃".format(i) for i in range(min(y),max(y)+1)] # plt.yticks(range(min(y),max(y)+1,),y_ticks_label) # # plt.plot(x,y) # plt.show() '''設置中文顯示''' #matplotlib只顯示英文,無法顯示中文,要使用中文的話需要修改matplotlib的默認字體 #此時修改matplotlib默認字體的話可以使用font_manager修改 # #以2個小時每分鐘心臟跳動變化 # x = range(0,120) # y = [random.randint(10,30) for i in x ] # # plt.figure(figsize=(20,8),dpi = 80) # #plt.plot(x,y) # # #x座標軸信息 # # my_font= matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18) # # #設置x軸標籤,並將字體旋轉45度 # plt.xlabel('時間',rotation = 45,fontproperties = my_font) # #設置y軸標籤, # plt.ylabel('次數',fontproperties = my_font) # # #設置標題 # plt.title('每分鐘跳動次數',fontproperties = my_font,color = 'red') # #繪製圖形 # plt.plot(x,y) # plt.show() '''一線多圖''' ''' 假設大家在30歲的時候,根據自己的實際情況, 統計出來你和你同事各自從11歲到30歲每年交的男/女朋友的數量如列表y1和y2, 請在一個圖中繪製出該數據的折線圖,從而分析每年交朋友的數量走勢。''' # y1 = [1,0,1,1,2,4,3,4,4,5,6,5,4,3,3,1,1,1,1,1] # y2 = [1,0,3,1,2,2,3,4,3,2,1,2,1,1,1,1,1,1,1,1] # # x = range(11,31) # #設置圖形 # plt.figure(figsize=(20,8),dpi=80) # # plt.plot(x,y1,color = 'red',label= '自己') # plt.plot(x,y2,color = 'blue',label = '同事') # # #設置x軸刻度標籤 # # xticks_label = ['{}歲'.format(i) for i in x] # my_font = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18) # plt.xticks(x,xticks_label,fontproperties = my_font,rotation = 45) # # #繪製網格(網格也可以設置線的樣式) # #alpha = 0.4 設置網格透明度 # plt.grid(alpha = 0.4) # # #添加圖例注意:(只有在這裏需要添加prop參數是顯示中文,其他的都用fontproperties) # #設置圖例位置loc : upper left、 lower left、 center left、 upper center # # plt.legend(prop = my_font,loc = 'upper right') # # #展示 # plt.show() '''繪製一圖多個座標系子圖''' # #add_subplot方法--給figure增加子圖 # x = np.arange(1,100) # #新建figure對象 # fig = plt.figure(figsize=(20,10),dpi = 80) # #新建子圖1 # ax1 = fig.add_subplot(2,2,1)#表示“2×2網格,第2子圖” # ax1.plot(x,x) # # #新建子圖2 # ax2 = fig.add_subplot(2,2,2) # ax2.plot(x,x**2) # # #新建子圖3 # ax3 = fig.add_subplot(2,2,3) # ax3.plot(x,np.log(x)) # # plt.show() '''設置座標軸範圍''' # x = np.arange(-10,11,1) # y = x**2 # plt.plot(x,y) # #可以調x軸的左右兩邊 # #plt.xlim([-5,5]) # # #調x軸一邊的方向 # plt.xlim(xmin = -4) # plt.xlim(xmax = 4) # plt.ylim(ymin = 0) # plt.ylim(ymax = 100) # plt.show() '''改變座標軸的默認顯示方式''' # y = range(0,14,2) # x = [-3,-2,-1,0,1,2,3] # # #獲取當前圖表的圖像 # ax = plt.gca() # # #設置圖形的包圍線 # ax.spines['right'].set_color('none') # ax.spines['left'].set_color('red') # ax.spines['top'].set_color('none') # ax.spines['bottom'].set_color('blue') # # #設置底邊的移動的範圍,移動到y軸的0位置,'data':移動軸的位置到交叉軸的指定座標 # ax.spines['bottom'].set_position(('data',0)) # ax.spines['left'].set_position(('data',0)) # # plt.plot(x,y) # plt.show() '''繪製散點圖''' '''題幹 3月份每天最高氣溫 a = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] ''' x = range(1,32) y = [11,17,16,11,12,11,12,6,6,7,8,9,12,15,14,17,18,21,16,17,20,14,15,15,15,19,21,22,22,22,23] #設置圖形大小 plt.figure(figsize=(20,8),dpi=80) plt.scatter(x,y,label = '三月份') #調整x軸的刻度 my_font = matplotlib.font_manager.FontProperties(fname=r'C:\Windows\Fonts\simsun.ttc',size = 18) xticks_label = ['3月{}號'.format(i) for i in x] plt.xticks(x[::3],xticks_label[::3],fontproperties = my_font,rotation = 45) plt.xlabel('日期',fontproperties = my_font) plt.ylabel('溫度',fontproperties = my_font) #圖例 plt.legend(prop = my_font,loc = 'upper right')
plt.show()
在這裏我主要繪製的是折線圖,對於餅圖、直方圖、條形圖繪製方法大同小異。希望分享的代碼能夠幫助到一你們。嘎嘎!