Python下matplotlib常見圖形繪制


Matplotlib 是 Python 的一個2D繪圖庫,可以幫助我們繪制各種圖形,下面介紹一些最常見的數學圖形繪制方法。

 

1.直線圖

import numpy as np 
import matplotlib.pyplot as plt 
 
x = np.arange(1,6) 
y =  2 * x
plt.title("LineGraph") #標題名
plt.xlabel("x axis") #x軸標注
plt.ylabel("y axis") #y軸標注
plt.plot(x,y) #以x為橫坐標,y為縱坐標,按照(x,y)的順序繪圖
plt.show() #顯示圖像

運行結果:

 

 

關於上述代碼中的plot函數,調用形式一般為:

plot([x], y, [fmt], data=None, **kwargs)

plot([x], y, [fmt], [x2], y2, [fmt2], …, **kwargs)

其中,fmt = [color][marker][linestyle],用於定義圖的基本屬性:顏色(color)、點型(marker)、線型(linestyle)。

**kwargs參數包括:x軸數據、y軸數據、線寬(linewidth)、線條顏色(color)。

通常,如果需要在一張圖中繪制不同類別的數據點時,可以通過設置plot()參數來區分不同類別的點和相應的直線。


例如,我們可以將上述代碼改為:

import numpy as np 
import matplotlib.pyplot as plt 
import matplotlib
# 設置matplotlib顯示中文和負號
matplotlib.rcParams['font.sans-serif']=['SimHei'] # 顯示中文為黑體
matplotlib.rcParams['axes.unicode_minus']=False # 正常顯示負號

x1 = np.arange(-5,6) 
y1 =  2 * x
x2 = np.arange(-5,6) 
y2 =  x / 2
plt.title("直線圖") 
plt.xlabel("x軸") 
plt.ylabel("y軸") 
plt.plot(x1,y1,'-.ro') #線形為點橫線,數據點形狀為圓圈,線條和數據點顏色為紅色
plt.plot(x2,y2,':b+') #線形為點線,數據點形狀為加號,線條和數據點顏色為藍色
plt.show()

運行結果:

 

 

2.sin、cos函數圖

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-np.pi, np.pi, 256, endpoint=True) #獲取x坐標
s, c = np.sin(x), np.cos(x) #獲取y坐標
plt.plot(x, s,"r-")  
plt.plot(x, c,"g-")
plt.show()

運行結果:

 

 

 

3.條形圖

pyplot 子模塊提供 bar() 函數來生成條形圖。

import numpy as np
import matplotlib.pyplot as plt

from matplotlib import pyplot as plt 
x1 = [1,3,5] 
y1 = [1,2,3] 
x2 = [2,4,6] 
y2 = [3,2,1] 
plt.bar(x1, y1, facecolor='#9999ff', edgecolor='r') 
plt.bar(x2, y2, facecolor='c', edgecolor='k') 
plt.title('條形圖') 
plt.xlabel('x軸') 
plt.ylabel('y軸') 
plt.show()

運行結果:

 

 

4.折線圖

import matplotlib.pyplot as plt

x = [1,3,6,7,9,12]
y = [8,2,4,1,9,9]

plt.plot(x, y, 'rp-', markersize=10)
plt.title('折線圖') 
plt.xlabel('x軸') 
plt.ylabel('y軸') 
plt.show()

運行結果:

 

 

5.直方圖

import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 隨機生成(10000,)服從正態分布的數據
data = np.random.randn(10000)

# data:繪圖數據
# bins:直方圖的長條形數目,默認為10。
# density:是否將得到的直方圖向量歸一化,density默認為0代表不歸一化,顯示頻數;density=1表示歸一化,顯示頻率。
# facecolor:長條形的顏色
# edgecolor:長條形邊框的顏色
# alpha:透明度
    
plt.hist(data, bins=50, density=1, facecolor="m", edgecolor="k", alpha=0.5)
plt.title('直方圖') 
plt.xlabel('區間') 
plt.ylabel('頻率') 
plt.show()

運行結果:

 

 

6.餅圖

import matplotlib.pyplot as plt
import matplotlib

#以一個人數為60的班的學生考試成績為例
label_list = ["0-59分", "60-70分", "70-80分", "80-90分", "90-100分"] #餅圖各部分標簽,對成績划分區間
size = [3, 12, 15, 25, 5] #餅圖各部分大小,各區間對應人數
color = ["#EB7AD4", "#76BFF0", "c", "#EFAA98", "#AA8ADC"]  #餅圖各部分顏色
explode = [0, 0, 0, 0.1, 0]   # 設置突出值

# labeldistance:設置標簽文本距圓心位置,1.1表示1.1倍半徑
# autopct:設置圓里面文本
# shadow:設置是否有陰影
# startangle:起始角度,默認從0開始逆時針轉
# pctdistance:設置圓內文本距圓心距離
# patches:返回值
# l_text:圓內部文本
# p_text:圓外部文本

patches, l_text, p_text = plt.pie(size, explode=explode, colors=color, labels=label_list, labeldistance=1.12, autopct="%1.1f%%", shadow=True, startangle=90, pctdistance=0.8)
plt.axis("equal")    # 設置橫軸和縱軸大小相等,這樣餅才是圓的
plt.legend()
plt.show()

運行結果:

 


免責聲明!

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



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