一、導入需要的模塊
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()