Matplotlib是建立在Numpy基礎(chǔ)之上的python繪圖庫(kù)瞻佛。Matplotlib是python中常用的可視化工具之一琉苇,可以非常的方便的創(chuàng)建海量類型2D圖標(biāo)和一些基本的3D圖標(biāo)嘲玫。
1.導(dǎo)入模塊:
①from matplotlib import pylab
導(dǎo)入pyplot和numpy模塊
②import matplotlib.pyplot as plt
僅導(dǎo)入plt,(常用)
2.基本繪圖
import matplotlib.pyplotas plt
import numpy as np
x = np.linspace(-10,10,100)
y=np.sin(x)
plt.plot(x,y,ls="-",lw="2",c="k")
plt.show()
np.linspace(a并扇,b去团,num=c)創(chuàng)建指定間隔內(nèi)均勻間隔數(shù)字的一維數(shù)組——a為起始值,b為結(jié)束值穷蛹,c為數(shù)組元素個(gè)數(shù)土陪,即-10到10之間均勻的取100個(gè)數(shù)。plot()展現(xiàn)變量的趨勢(shì)變化肴熏。通過show()展示繪制圖形
①plot()——展示變量的趨勢(shì)變化旺坠,主要展示折線、散點(diǎn)圖
參數(shù)為:
x:x軸上的數(shù)值
y:y軸上的數(shù)值(x扮超,y的數(shù)量要一樣)
第三個(gè)參數(shù)可以設(shè)置散點(diǎn)圖‘o’或者顏色等各種各樣的樣式取刃,可以同時(shí)傳入多個(gè)參數(shù)
lw:折線圖的線條寬度(一個(gè)值)
①plt.plot(x,y,ls=":",lw="2",c="k")
②plt.plot(x,y,"rv")
③plt.plot(x,y,"*y")
????·繪制多條曲線:
x = np.linspace(0,10,100)
y=np.sin(x)
plt.plot(x,y)
plt.plot(x,x+2)
plt.plot(x,np.log2(x))
plt.show()
②尋找變量之間的關(guān)系
plt.scatter()
參數(shù):x,y軸上的數(shù)值出刷,c散點(diǎn)圖的標(biāo)記顏色
x=np.linspace(0.05,10,1000)
y=np.random.rand(1000)
plt.scatter(x,y,c='b')
plt.show()
③xlim()璧疗,ylim()——設(shè)置x(y)軸的數(shù)值顯示范圍
④xlabel(string)馁龟,ylabel(string)——設(shè)置x(y)軸的標(biāo)簽文本
x=np.linspace(0,10)
y = x**2
plt.xlabel("x")
plt.ylabel("y")
plt.title("nap")
plt.minorticks_on()
plt.plot(x,y,color='red')
plt.show()
⑤grid()——繪制刻度線網(wǎng)格線
x=np.linspace(0,10)
y = x**2
plt.grid(ls=':',c='y')
plt.plot(x,y,c='b')
plt.show()
⑥axhline()崩侠,axvline()——繪制平行于x(y)軸的水平參考線
參數(shù):
y(x):水平參考線出發(fā)點(diǎn)
c:顏色
ls:參考線線條風(fēng)格
lw:參考線的線條寬度
x=np.linspace(0,10)
y = x**2
plt.axhline(y=40,c='r',ls=":",lw=2)
plt.axvline(x=6,c='r',ls=":",lw=2)
plt.plot(x,y,label ="plot figure")
plt.legend()
plt.show()
⑦axvspan(),axhspan()——繪制垂直于x軸的參考區(qū)域
參數(shù):
x(y)min:參考區(qū)域的起始位置
x(y)max:參考區(qū)域的終止位置
facecolor:區(qū)域顏色
alpha:透明度
x=np.linspace(0,10)
y = x**2
# plt.axhline(y=40,c='r',ls=":",lw=2)
# plt.axvline(x=6,c='r',ls=":",lw=2)
plt.axvspan(xmin=6,xmax=8,facecolor="y",alpha=0.3)
plt.axhspan(ymin=40,ymax=60,facecolor="y",alpha=0.3)
plt.plot(x,y,label ="plot figure")
plt.legend()
plt.show()
⑧annotate()——添加圖形內(nèi)容細(xì)節(jié)的指向型注釋文本
參數(shù):
string:文本內(nèi)容
xy:備注的圖形內(nèi)容的位置坐標(biāo)
xytext:注釋文本的坐標(biāo)位置
weight:文本字體粗細(xì)風(fēng)格
color:文本字體顏色
arrowprops:只是被注釋內(nèi)容的箭頭屬性字典
x=np.linspace(0,10)
y = x**2
plt.plot(x,y,label="x^2",c="b")
plt.legend()
plt.annotate("(1,1)",xy=(1,1),xytext=(1.5,6),color="b",arrowprops=dict(arrowstyle='->',connectionstyle='arc3',color='b'))
plt.show()
⑨t(yī)ext()——添加圖形內(nèi)容細(xì)節(jié)的無(wú)指向性注釋文本
plt.text(x,y,string,weight="",color="")
x=np.linspace(0,10)
y = x**2
plt.plot(x,y,label="x^2",c="b")
plt.legend()
plt.text(4,30,"y=x^2",color='b')
plt.show()
⑩title()——添加圖形內(nèi)容標(biāo)題
plt.title(string)
x=np.linspace(0,10)
y = x**2
plt.plot(x,y,label="x^2",c="b")
plt.legend()
plt.text(4,30,"y=x^2",color='b')
plt.title("y=x^2")
plt.show()
·legend()——表示不同圖形的文本標(biāo)簽圖例
plt.legend(loc='')
loc:圖例在圖中的地理位置
3.pyplot的基礎(chǔ)圖標(biāo)函數(shù)如下
①餅圖:
labels=[u"第一部分",u"第二部分",u"第三部分",u"第四部分"]
sizes=[15,30,45,10]
colors=['red','yellow','blue','green']
#每個(gè)標(biāo)簽的大小坷檩,百分比會(huì)自動(dòng)算
explode=(0,0.1,0,0)
#將某部分分出來却音,使用括號(hào),用數(shù)值表示分割出來的與其他幾塊的間隙
plt.figure(figsize=(6,9))
#調(diào)節(jié)圖形大小寬高
figl,axl=plt.subplots()
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',startangle=90)
plt.axis('equal')
plt.show()
②直方圖
plt.hist(x)
x:在x軸上繪制箱體的定量輸入值
a=np.random.normal(100,20,size=100)
plt.hist(a,20,density=True,histtype='stepfilled',facecolor='b',alpha=0.75)
plt.title('histogram')
plt.show()
③極線圖
plt.polar(theta矢炼,r)
theta:每個(gè)標(biāo)記所在射線與極經(jīng)的夾角
r:每個(gè)標(biāo)記到原點(diǎn)的距離
theta=np.linspace(0.0,2*np.pi,15,endpoint=False)
r=30*np.random.rand(15)
plt.polar(theta,r,color='#6BBBEC',linewidth=2,marker='*',mfc='b',ms=10,linestyle=':')
plt.show()
④柱狀圖
plt.bar(x系瓢,y)
x=[1,2,3,4,5,6,7,8]
y=[3,1,4,5,8,9,7,2]
plt.bar(x,y,align='center',color='c',tick_label=["q","a","c","e","r","j","b","p"],hatch='/')
plt.show()
4.Matplotlib繪圖區(qū)域:
plt.subplot(nrows,ncols,plot_number)
↓
plt.subplot(2,2,3)
a=np.random.normal(100,20,size=100)
plt.hist(a,20,density=True,histtype='stepfilled',facecolor='b',alpha=0.75)
plt.title('histogram')
plt.subplot(2,2,2)
labels=[u"第一部分",u"第二部分",u"第三部分",u"第四部分"]
sizes=[15,30,45,10]
colors=['red','yellow','blue','green']
#每個(gè)標(biāo)簽的大小,百分比會(huì)自動(dòng)算
explode=(0,0.1,0,0)
#將某部分分出來句灌,使用括號(hào)夷陋,用數(shù)值表示分割出來的與其他幾塊的間隙
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',startangle=90)
plt.axis('equal')
plt.subplot(2,2,1)
x=np.linspace(-5,5,100)
y=x**2
plt.plot(x,y,'-',c='b')
plt.subplot(2,2,4)
x=np.linspace(-5,5,100)
y=np.random.rand(100)
plt.scatter(x,y)
plt.show()