有的時候我們想知道我們所處理的數(shù)據(jù)是如何分布的,在計算的時候又是如何變化的.僅靠打印很難有直觀的感受.最好的辦法就是用圖像把數(shù)據(jù)表達出來.
本文介紹一下phthon中常用畫圖模塊matplotlib的基本用法,相當于matlab
曲線圖
Figure_1.png
# 構(gòu)造數(shù)據(jù)
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3, 3, 50)
y1 = x ** 2 + 1
y2 = 2 * x + 1
# 畫圖
plt.plot(x, y2,label='2 * x + 1')
plt.plot(x, y1, color='red', linewidth=1.0, linestyle='--',label='x ** 2 + 1')
# 顯示標注
plt.legend()
plt.show()
散點圖
Figure_2.png
import matplotlib.pyplot as plt
import numpy as np
# 散點圖
x = np.random.normal(0, 1, 1024)
y = np.random.normal(0, 1, 1024)
# 隨機顏色
T = np.arctan2(x, y)
plt.scatter(x, y, s=75, c=T, alpha=0.5)
# 設置橫縱坐標軸展示范圍
plt.xlim((-1.5,1.5))
plt.ylim((-1.5,1.5))
# 隱藏橫縱坐標軸
plt.xticks(())
plt.yticks(())
plt.show()
直方圖
Figure_4.png
import matplotlib.pyplot as plt
import numpy as np
## 直方圖费彼。。口芍。箍铲。
## 生成數(shù)據(jù)
n = 12
X = np.arange(n)
Y1 = np.random.uniform(0.5,1.0,n)
Y2 = np.random.uniform(0.5,1.0,n)
# 畫圖
plt.bar(X, +Y1, facecolor='#9999ff', edgecolor='white')
plt.bar(X, -Y2, facecolor='#ff9999', edgecolor='white')
## 標注數(shù)值
for x,y in zip(X,Y1):
plt.text(x+0.4, y+0.05, '%.2f' % y, ha='center', va= 'bottom')
# 設置y軸展示范圍
plt.ylim(-1.25,+1.25)
plt.show()
餅狀圖
Figure_1-1.png
import matplotlib.pyplot as plt
#調(diào)節(jié)圖形大小,寬鬓椭,高
plt.figure(figsize=(6,9))
#定義餅狀圖的標簽颠猴,標簽是列表
labels = [u'one',u'two',u'three']
#每個標簽占多大,會自動去算百分比
sizes = [60,30,10]
colors = ['red','yellowgreen','lightskyblue']
#將某部分爆炸出來小染, 使用括號翘瓮,將第一塊分割出來,數(shù)值的大小是分割出來的與其他兩塊的間隙
explode = (0.05,0,0)
patches,l_text,p_text = plt.pie(sizes,explode=explode,labels=labels,colors=colors,
labeldistance = 1.1,autopct = '%3.1f%%',shadow = False,
startangle = 90,pctdistance = 0.6)
#labeldistance裤翩,文本的位置離遠點有多遠资盅,1.1指1.1倍半徑的位置
#autopct,圓里面的文本格式,%3.1f%%表示小數(shù)有三位呵扛,整數(shù)有一位的浮點數(shù)
#shadow每庆,餅是否有陰影
#startangle,起始角度今穿,0缤灵,表示從0開始逆時針轉(zhuǎn),為第一塊蓝晒。一般選擇從90度開始比較好看
#pctdistance腮出,百分比的text離圓心的距離
#patches, l_texts, p_texts,為了得到餅圖的返回值芝薇,p_texts餅圖內(nèi)部文本的胚嘲,l_texts餅圖外label的文本
#改變文本的大小
#方法是把每一個text遍歷。調(diào)用set_size方法設置它的屬性
for t in l_text:
t.set_size=(30)
for t in p_text:
t.set_size=(20)
# 設置x剩燥,y軸刻度一致慢逾,這樣餅圖才能是圓的
plt.axis('equal')
plt.legend()
plt.show()
手寫圖
這個就是好看用的了,嘿嘿
Figure_6.png
import numpy as np
import matplotlib.pyplot as plt
eqs = []
eqs.append((r"$W^{3\beta}_{\delta_1 \rho_1 \sigma_2} = U^{3\beta}_{\delta_1 \rho_1} + \frac{1}{8 \pi 2} \int^{\alpha_2}_{\alpha_2} d \alpha^\prime_2 \left[\frac{ U^{2\beta}_{\delta_1 \rho_1} - \alpha^\prime_2U^{1\beta}_{\rho_1 \sigma_2} }{U^{0\beta}_{\rho_1 \sigma_2}}\right]$"))
eqs.append((r"$\frac{d\rho}{d t} + \rho \vec{v}\cdot\nabla\vec{v} = -\nabla p + \mu\nabla^2 \vec{v} + \rho \vec{g}$"))
eqs.append((r"$\int_{-\infty}^\infty e^{-x^2}dx=\sqrt{\pi}$"))
eqs.append((r"$E = mc^2 = \sqrt{{m_0}^2c^4 + p^2c^2}$"))
eqs.append((r"$F_G = G\frac{m_1m_2}{r^2}$"))
plt.axes([0.025,0.025,0.95,0.95])
for i in range(24):
index = np.random.randint(0,len(eqs))
eq = eqs[index]
size = np.random.uniform(12,32)
x,y = np.random.uniform(0,1,2)
alpha = np.random.uniform(0.25,.75)
plt.text(x, y, eq, ha='center', va='center', color="#11557c", alpha=alpha,
transform=plt.gca().transAxes, fontsize=size, clip_on=True)
plt.xticks([]), plt.yticks([])
# savefig('../figures/text_ex.png',dpi=48)
plt.show()
本文鏈接:https://www.kupposhadow.com/post/5a1fd8dbe717c543d753e7d6
本站采用「署名 4.0 國際(CC BY 4.0)」創(chuàng)作共享協(xié)議。只要在使用時署名灭红,那么使用者可以對本站所有原創(chuàng)內(nèi)容進行轉(zhuǎn)載侣滩、二次創(chuàng)作、商業(yè)性使用变擒。