首頁 > 軟體

Python Matplotlib繪圖基礎詳細教學

2022-07-01 14:04:38

plt是最常用的介面

1. 畫圖的基本步驟

1.匯入模組

import matplotlib as mpl
import matplotlib.pyplot as plt

2.建立畫板,然後對畫板進行調整

3.定義資料

4.繪製圖形(包含座標軸的設定,資料的匯入,線條的樣式,顏色,還有標題,圖例,等等)

5.plt.show()

1.1一步一步看

1.1.1**(一)第一步:建立並定義一個"畫板"**(你將要在你定義的畫板上面進行畫圖操作).

fig=plt.figure()#定義一張畫板命名為fig

在plt.figure()括號裡面還有一些引數

例如:

huaban=plt.figure(figsize=(6,10),facecolor='b',dpi=500)
#figsize是調整你的影象的比例大小,上面所示就是:長/寬=6/10
#facecolor是設定畫板的背景顏色,一般顏色程式碼為英文的首字母
#dpi設定影象的解析度,解析度越影象越清晰
#edgcolor是設定邊框顏色的引數

1.1.2**(二).第二步:定義你的x,y資料**

這裡我們使用numpy庫函數來製造一些資料

所以我們還得匯入numpy函數

import numpy as np
#設定xy的值
x=np.linspace(-5,5,11)#這裡就是把-5到5平均分成十一份,(-5,-4,-3,.....)
y=[1,6,3,-3,6,8,3,6,9,1,-5]

1.1.3**(三).第三步:設定x,y軸的大小,刻度,…**

#新增p1到畫板
p1=fig.add_subplot(111)#這裡的111是指把畫板分成一行一列,把p1新增到第一副圖

#限制函數座標軸的長度
p1.axis([-5,5,-10,10])#x軸長度為-5到5,y軸長度為-10到10

#設定x,y軸的刻度
plt.xticks(x)
plt.yticks(y)
#這裡是指:x,y軸的刻度為之前定義的x,y資料列表

#設定座標軸的上下限
plt.xlim(-5,5)
plt.ylim(-10,10)

1.1.4(四).繪製影象,匯入x,y資料,設定線條樣式,顏色,粗細,新增圖例,標題…

#繪製影象
p1.plot(x,y,marker='o',ms=5,lw=2,ls='--',label='band')
#x,y就是最開始定義的資料
#marker是設定拐點樣式:o/h/^/./+等等
#ms是設定拐點的標記大小
#lw就是設定線條粗細,數值越大線條越粗
#ls是設定線條樣式,這裡'--'為虛線
#label是設定此線條的名稱標題


p1.legend(loc='best')#新增圖例,其中best是指將圖例的位置新增到最佳位置,
#你也可以自己設定位置,例如:upper left(左上角)


#新增標題
plt.title('NUM',fontsize=24)#設定影象的標題,fontsize是設定標題文字的大小
plt.xlabel('Value',fontsize=14)#設定x軸的標題
plt.ylabel('ARG',fontsize=14)#設定y軸的標題

現在基本上就設定好了,因為我是在指令碼中畫圖,所以我需要在程式碼的最後新增一個:plt.show(),它會自動啟用一個事件迴圈,並找到所有當前可用的圖形物件,然後開啟一個互動式視窗來顯示圖形.

1.1.5上述的完整的程式碼(有一些細節的新增):

import matplotlib.pyplot as plt
import numpy as np
#設定xy的值
x=np.linspace(-5,5,11)
y=[1,6,3,-3,6,8,3,6,9,1,-5]
#建立一張畫板
huaban=plt.figure(figsize=(6,10))
#新增p1到畫板
p1=huaban.add_subplot(111)

#限制函數座標軸的長度
p1.axis([-5,5,-10,10])

#設定x,y軸的刻度
plt.xticks(x)
plt.yticks(y)


#去除右邊邊框
p1.spines['right'].set_color('none')
#去除頂部邊框
p1.spines['top'].set_color('none')

#下面兩行程式碼是將xy軸的交點改為(0,0)
p1.spines['bottom'].set_position(('data',0))
p1.spines['left'].set_position(('data',0))

#繪製影象
p1.plot(x,y,marker='^',ms=5,lw=2,ls='--',label='band')
p1.legend(loc='upper left')
#新增標題
plt.title('NUM',fontsize=24)
plt.xlabel('Value',fontsize=14)
plt.ylabel('ARG',fontsize=14)

#新增輔助虛線
for i in range(len(x)):
    x1=[x[i],x[i]]
    y1=[0,y[i]]
    plt.plot(x1,y1,'r-.')
for i in range(len(x)):
    x2=[0,x[i]]
    y2=[y[i],y[i]]
    p1.plot(x2,y2,'r-.')

#新增每個折點的座標
for i in range(len(x)):
    p1.text(x[i],y[i],(x[i],y[i]),c='green')

plt.grid(c='b',ls='--')#這個函數是生成網格的函數
plt.show()

輸出結果:

2.散點圖

散點圖其實大部分語法和上述差不多,只需要將折線圖中的plt.polt()改為plt.scatter()

這裡我們只需要畫一幅圖來做個例子,就省去建立畫板的步驟,建立畫板的步驟在後面才會有用.

import numpy as np
import matplotlib.pyplot as plt

#隨機生成一些資料
N=20
x=np.random.rand(N)
y=np.random.rand(N)
x1=np.random.rand(N)
y1=np.random.rand(N)

plt.scatter(x,y,s=100,c='red',marker='^',label='red')#c是color的簡稱,設定顏色
plt.legend(loc='best')

plt.scatter(x1,y1,s=50,c='blue',marker='o',label='blue')
plt.legend(loc='upper left')#在左上角新增圖例

plt.xlabel('x')#給橫座標新增標籤
plt.ylabel('y')#給縱座標新增標籤
plt.title('picture')#給影象新增標籤
plt.show()#顯示影象

輸出結果:

3.條形圖的繪製

使用plt.bar()進行繪製

import numpy as np
import matplotlib.pyplot as plt

x=[1,2,3,4,5]
y=np.random.rand(5)
plt.figure(figsize=(8,4))
plt.bar(x,y)
x_t=list(range(len(x)))
plt.xticks(x,x_t)
plt.show()

輸出結果:

4.四幅子圖的繪製

畫子圖就需要建立畫板,然後對畫板進行分割,然後在分出來的位置進行繪製不同的影象.

重點是這裡:

p1 = huaban.add_subplot(221)p2=huaban.add_subplot(222)p3=huaban.add_subplot(223)p4=huaban.add_subplot(224)#這些數位的意思就是,把畫板分成兩行兩列,四個位置,然後p1在位置1,p2在位置2,p3在位置3.......
import numpy as np
import matplotlib.pyplot as plt

x=range(-10,10,1)
y=np.random.rand(20)
huaban=plt.figure(facecolor='pink',figsize=(8,8),dpi=100)

p1 = huaban.add_subplot(221)
p1.plot(x,y,label="sinx",marker='o')
plt.legend(loc='best')
plt.grid(c='r',linestyle=':')

p2=huaban.add_subplot(222)
x1=np.linspace(-np.pi*2,np.pi*2,1000)
y1=np.sin(x1)
p2.plot(x1,y1,label="sinx",color='blue')
plt.legend(loc='best')
plt.grid(c='b',linestyle='--')


p3=huaban.add_subplot(223)
x2=np.random.rand(10)
y2=np.random.rand(10)
x3=np.random.rand(10)
y3=np.random.rand(10)
p3.scatter(x2,y2,c='red',marker='o',label="散點圖")
p3.scatter(x3,y3,c='red',marker='^',label="散1")

p4=huaban.add_subplot(2,2,4)
p4.plot(x1,np.cos(x1),label="cosx")
plt.legend('best')
plt.grid(c='c',linestyle=':')
plt.show()

輸出結果:

5.餅狀圖的繪製

import matplotlib.pyplot as plt
x=[35,25,25,15]
colors=["#14615E", "#F46C40", "#3E95C0", "#A17D3B"]
name=['A','B','C','D']
label=['35.00%','25.00%','25.00%','15.00%']
huaban=plt.figure()
p1=huaban.add_subplot(111)

p1.pie(x,labels=name,colors=colors,autopct='%1.2f%%',explode = (0, 0.2, 0, 0))
plt.axis('equal')
plt.show()

輸出結果:

6.熱力圖的繪製

import matplotlib.pyplot as plt
import numpy as np
plt.figure(figsize=(4,4))
# Fixing random state for reproducibility
#np.random.seed(19680801)
#建立子圖1
plt.subplot(211)
plt.imshow(np.random.random((10, 10)), cmap="hot")

#建立子圖2
plt.subplot(212)
plt.imshow(np.random.random((5, 5)), cmap="winter")

plt.subplots_adjust(bottom=0.09, right=0.5, top=0.9)
cax = plt.axes([0.75, 0.1, 0.065, 0.8])
plt.colorbar(cax=cax)


plt.show()

輸出結果:

總結

到此這篇關於Python Matplotlib繪圖基礎的文章就介紹到這了,更多相關Python Matplotlib繪圖基礎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com