您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何在python中使用matplotlib庫(kù)繪圖,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
首先介紹繪圖時(shí)常用的基礎(chǔ)命令:
1.plt.plot(x,y)即為繪圖命令。
①基礎(chǔ)畫圖:
plt.plot(x, y)
②設(shè)置顏色:
color屬性
如果沒有特別要求的話可以不手動(dòng)設(shè)置顏色,如果要在一張圖上畫不同的線時(shí),會(huì)自動(dòng)分配顏色。也可以使用ax.plot效果相同。
plt.plot(x, y, color = 'red')
③設(shè)置線型:
lineStyle屬性
可以選擇'-', ‘–', ‘-.', ‘:', ‘None', ' ', ‘', ‘solid', ‘dashed', ‘dashdot', 'dotted'這些類型的。
plt.plot(x, y, lineStyle = 'dashdot')
④設(shè)置標(biāo)注類型:
marker屬性
有不同的marker可以選擇,比如'o','*',‘x'。
plt.plot(x, y ,marker='x')
⑤設(shè)置圖例:
label屬性。
plt.plot(x, y ,marker='o',label='語(yǔ)文成績(jī)') plt.plot(x, y ,marker='*',label='數(shù)學(xué)成績(jī)') plt.plot(x, y ,marker='x',label='英語(yǔ)成績(jī)')
只是這樣圖例是不會(huì)顯示的,還需要加上loc是位置設(shè)置,具體見后面講解。
plt.legend(loc='upper left')
①windows系統(tǒng):
plt.rcParams['font.family'] = ['sans-serif'] plt.rcParams['font.sans-serif'] = ['SimHei']
mac系統(tǒng):
這里是這樣設(shè)置的,也可以設(shè)置為其他中文字體。
plt.rcParams["font.family"] = 'Arial Unicode MS'
②正常顯示符號(hào):
plt.rcParams['axes.unicode_minus'] = False
①如果只畫一張圖的話可以,figsize設(shè)置的是x軸和y軸方向圖片大小的比例。這里要設(shè)置好否則可能會(huì)出現(xiàn)圖片顯示不完全的情況,如果通過savefig命令保存的話,也是按照這個(gè)比例來保存的圖片。
f = plt.figure(figsize=(8,6))
或是,雖然是通過subplots命令,可是不指定nrows和ncols默認(rèn)只有一個(gè)子圖。
f, ax = plt.subplots(figsize=(8,6))
ax表示的是當(dāng)前坐標(biāo)軸。
ax = plt.gca()
如果有多個(gè)子圖的話:
nrows為行,ncols為列,figsize為圖片的尺寸。
f, ax = plt.subplots(nrows=2,ncols=1,figsize=(8,6),facecolor='white')
或是
fig = plt.figure() ax1 = fig.add_subplot(2,1,1) ax2 = fig.add_subplot(2,1,2) ax1.plot(x,y) ax2.plot(x,z)
或是
ax1 = plt.subplot(2,1,1) ax2 = plt.subplot(2,1,2) ax1.plot(x,y) ax2.plot(x,z)
其他屬性:第一個(gè)屬性標(biāo)記的是窗口的名稱,dpi設(shè)置的分辨率。
f = plt.figure('成績(jī)窗口',figsize=(8,6),facecolor='white',dpi=100)
②設(shè)置圖片背景色:
f = plt.figure(figsize=(8,6),facecolor='blue')
如果要設(shè)置圖片前景色,要用
ax.set(facecolor='white')
①設(shè)置x軸的刻度:
需要指定標(biāo)注的位置,標(biāo)注的具體值,可以通過fontsize指定大小。
x = [0,2,4,6,8] x_label = ['第一學(xué)期','第二學(xué)期','第三學(xué)期','第四學(xué)期','第五學(xué)期'] plt.xticks(x, x_label,fontsize=13)
這里的xticks支持latex,
x_label = [r'$e^x$',r'$x_1^2$',r'$\lambda$',r'$\frac{1}{2}$',r'$\pi$']
有時(shí)候可能標(biāo)注的值很多,我們想把x軸的刻度豎著顯示:
只需要在x_label中要換行的地方加上'\n‘換行符即可。
x = [0,2,4,6,8] x_label = ['第\n一\n學(xué)\n期','第二\n學(xué)期','第\n三\n學(xué)\n期','第四\n學(xué)期','第五\n學(xué)期'] plt.xticks(x, x_label,fontsize=13)#這有一張圖
②設(shè)置x軸的標(biāo)簽:
這兩條命令是一樣的作用。
plt.xlabel(u"學(xué)期") ax.set_xlabel(u"學(xué)期")#設(shè)置x軸的標(biāo)簽值
xlabel同樣支持latex
plt.xlabel(u"$x^2$")
③設(shè)置x軸的范圍:
這兩條命令也是一樣的作用。
一般不需要人為指定范圍,程序會(huì)根據(jù)輸入的最大值和最小值自動(dòng)確定一個(gè)范圍。
plt.xlim(0,100) ax.set_xlim(0,100)
設(shè)置y軸的相關(guān)屬性和x軸的相關(guān)屬性方法是一樣的,只需要把x替換成y即可。
fontsize為大小,fontweight指定加粗。下面兩條命令作用相同。
plt.title('小明第一至第四學(xué)期成績(jī)變化折線圖',fontsize=18,fontweight='bold') ax.set_title('小明第一至第四學(xué)期成績(jī)變化折線圖',fontsize=18,fontweight='bold')
這里程序會(huì)自動(dòng)將標(biāo)題放在一個(gè)合適的位置,當(dāng)然也難免出現(xiàn)title不是我們想要的位置的情況,這是可以通過指定x或是y屬性,來設(shè)置title的位置。正常范圍是[0,1]可以設(shè)置負(fù)零點(diǎn)幾或是一點(diǎn)幾,需要多嘗試,如果設(shè)置超出圖片范圍會(huì)看不到title的。
比如這里我設(shè)置y=-0.1,可以看到title到下面去了。
plt.title('小明第一至第四學(xué)期成績(jī)變化折線圖',fontsize=18,fontweight='bold',y=-0.1)
法一:
在畫圖的時(shí)候做好標(biāo)注。
plt.plot(x, y[0,:],marker='o',label='語(yǔ)文成績(jī)') plt.plot(x, y[1,:],marker='*',label='數(shù)學(xué)成績(jī)') plt.plot(x, y[2,:],marker='x',label='英語(yǔ)成績(jī)') plt.legend(loc='upper left')
法二:
不寫在plot中,統(tǒng)一寫在legend中。
可以指定對(duì)應(yīng)曲線,這里的曲線定義后一定要加',',否則會(huì)報(bào)錯(cuò)。
a,=plt.plot(x, y[0,:],marker='o') b,=plt.plot(x, y[1,:],marker='*') c,=plt.plot(x, y[2,:],marker='x') plt.legend((a,b,c),('語(yǔ)文成績(jī)','數(shù)學(xué)成績(jī)','英語(yǔ)成績(jī)'),loc='upper left')
或是不指定對(duì)應(yīng)曲線,
plt.legend(('語(yǔ)文成績(jī)','數(shù)學(xué)成績(jī)','英語(yǔ)成績(jī)'),loc='upper left')
不指定對(duì)應(yīng)曲線的方式不推薦,有時(shí)候并不想給每個(gè)曲線都加圖例,不加圖例的曲線可以不寫label屬性。而該方式會(huì)按plot的順序,加圖例,不會(huì)跳過不想加圖例的曲線,除非是最后的曲線,不寫就不會(huì)加。
legend的命令只能通過plt設(shè)置,如果有多個(gè)子圖的話,
ax = plt.subplot(2,1,1)
這樣對(duì)plt操作就可以對(duì)子圖操作。
標(biāo)注的話需要寫循環(huán),一個(gè)個(gè)標(biāo)注,不能這樣寫plt.text(x,y,"%s"%str(y)),不會(huì)一次標(biāo)注一堆。
fontsize是設(shè)置標(biāo)注的字體。用ax是一樣的。
for i in range(len(x)): plt.text(x[i],y[i],"%s"%str(y[i]), fontsize=12) #ax.text(x[i],y[i],"%s"%str(y[i]), fontsize=12)
經(jīng)常出現(xiàn)legend把圖片內(nèi)容給擋住了的情況,這里也可以指定legend的位置。
可以通過bbox_to_anchor屬性來調(diào)整legend的位置。
plt.legend(bbox_to_anchor=(1.05, 1), loc=2)
圖例還有許多其他的屬性,
plt.savefig('小明成績(jī)變化圖.png')
plt.show()
這里有四個(gè)方向,可以選擇刪除哪一個(gè)方向的邊框。
ax.spines['right'].set_visible(False) ax.spines['top'].set_visible(False) ax.spines['bottom'].set_visible(False) ax.spines['left'].set_visible(False)
ax.grid(True) ax.grid(False)
python的五大特點(diǎn):1.簡(jiǎn)單易學(xué),開發(fā)程序時(shí),專注的是解決問題,而不是搞明白語(yǔ)言本身。2.面向?qū)ο?,與其他主要的語(yǔ)言如C++和Java相比, Python以一種非常強(qiáng)大又簡(jiǎn)單的方式實(shí)現(xiàn)面向?qū)ο缶幊獭?.可移植性,Python程序無(wú)需修改就可以在各種平臺(tái)上運(yùn)行。4.解釋性,Python語(yǔ)言寫的程序不需要編譯成二進(jìn)制代碼,可以直接從源代碼運(yùn)行程序。5.開源,Python是 FLOSS(自由/開放源碼軟件)之一。
關(guān)于如何在python中使用matplotlib庫(kù)繪圖就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。