matplotlib幾種畫圖的常用方法

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()

在這裏我主要繪製的是折線圖,對於餅圖、直方圖、條形圖繪製方法大同小異。希望分享的代碼能夠幫助到一你們。嘎嘎!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章