讀書筆記5基於matplotlib畫圖


一、導入需要的模塊

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as stats

二、畫基本圖形

1、plot畫圖

y=np.random.randn(100)
plt.plot(y,'b-')
plt.xlabel('x')
plt.ylabel('y')
plt.title(u'title')
plt.show()

可選參數如下所示:

也可以通過更改參數來改變畫圖效果

x=np.cumsum(np.random.rand(100))
plt.plot(y,label='line label',color='r',linestyle='-',marker='o')
plt.show()

可選的參數有

2、scatter畫圖,使用兩個相同大小的一維數組產生。

例如:數據服從正態分布,相關系數是0.5

z=np.random.randn(100,2)
z[:,1]=0.5*z[:,0]+np.sqrt(0.5)*z[:,1]
x=z[:,0];
y=z[:,1];
plt.scatter(x,y);
plt.show()

參數也是可以修改的例如:

z=np.random.randn(100,2)
z[:,1]=0.5*z[:,0]+np.sqrt(0.5)*z[:,1]
x=z[:,0];
y=z[:,1];
plt.scatter(x,y,marker='s',c='r');
plt.show()

3、畫條形圖bar,需要兩個一位數組,第一個是橫坐標,每個條形圖的開始位置;縱坐標是條形圖的高度

y=np.random.rand(5);
x=np.arange(5);
plt.bar(x,y)
plt.show()

修改他的顯示屬性,可以使用一個顏色數組來指定每個條形圖的顏色。

y=np.random.rand(5);
x=np.arange(5);
colors=['#FF0000','#FFFF00','#00FF00','#00FFFF','#0000FF']
plt.bar(x,y,width=0.5,color=colors,edgecolor='#000000',linewidth=5)
plt.show()

4、pie圖表,使用一個一維數組來表示,不要求累加和是1,可以使人以大小的正數。

x=np.arange(1,8);
labels=['label1','label2','label3','label4','label5','label6','label7']
plt.pie(x,labels=labels)
plt.show()

 

5、直方圖hist,需要一個數組,bins參數表示將數據分成幾組,默認是10組。

x=np.random.randn(2000);
plt.hist(x,bins=30);
plt.show()

如果想要生成累計直方圖需要使參數cumulative為true

x=np.random.randn(1000);
plt.hist(x,bins=20,cumulative=True);
plt.show()

6、在同一個圖上畫出多張圖表,需要首先使用figure()函數生成一個畫板,畫子圖時需要使用sp=add_subplot(m,n,p)來表示子圖。m表示行,n表示列,p表示第幾個圖。

返回的是子圖的句柄用於設置一些參數。最后要想顯示出來需要使用draw()函數,將這些子圖畫在畫板上,然后用show()函數顯示出來。

fig = plt.figure()
ax = fig.add_subplot(2, 2, 1)
y = np.random.randn(100)
plt.plot(y);
ax.set_title('1')

y = np.random.rand(5)
x = np.arange(5)
ax = fig.add_subplot(2, 2, 2)
plt.bar(x, y)
ax.set_title('2');

y = np.random.rand(5)
y = y / np.sum(y)
y[y < .05] = .05
ax = fig.add_subplot(2, 2, 3)
plt.pie(y)
ax.set_title('3')

plt.draw()
plt.show()

 7、3D畫圖

(1)畫線,使用plot,需要Axed3D(fig)來畫出3D軸線,

import copy
from mpl_toolkits.mplot3d import Axes3D
x=np.linspace(0,6*np.pi,600);
z=copy.copy(x)
x=np.cos(z)
y=np.sin(z);
fig=plt.figure()
ax = Axes3D(fig)
ax.plot(x,y,zs=z)
plt.xlabel('x')
plt.ylabel('y')
ax.view_init(15,45)
plt.draw()
plt.show()

8、保存圖像,使用savefig(’filename.ext’) ,其中ext支持png, pdf, ps, eps or svg格式。

import copy
from mpl_toolkits.mplot3d import Axes3D
x=np.linspace(0,6*np.pi,600);
z=copy.copy(x)
x=np.cos(z)
y=np.sin(z);
fig=plt.figure()
ax = Axes3D(fig)
ax.plot(x,y,zs=z)
plt.xlabel('x')
plt.ylabel('y')
ax.view_init(15,45)
plt.savefig('3dplot.png')
plt.draw()
plt.show()

 


免責聲明!

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



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