如何用python繪製各種圖形,python繪製圖形
1.環境
系統:windows10
python版本:python3.6.1
使用的庫:matplotlib,numpy
2.numpy庫產生隨機數幾種方法
import numpy as np
numpy.random
| rand(d0, d1, ..., dn) |
In [2]: x=np.random.rand(2,5) In [3]: x Out[3]: array([[ 0.84286554, 0.50007593, 0.66500549, 0.97387807, 0.03993009], [ 0.46391661, 0.50717355, 0.21527461, 0.92692517, 0.2567891 ]]) |
randn(d0, d1, ..., dn)查詢結果為標準常態分佈 |
In [4]: x=np.random.randn(2,5) In [5]: x Out[5]: array([[-0.77195196, 0.26651203, -0.35045793, -0.0210377 , 0.89749635], [-0.20229338, 1.44852833, -0.10858996, -1.65034606, -0.39793635]]) |
| randint(low,high,size) |
產生low到high之間(半開區間 [low, high)),size個資料 In [6]: x=np.random.randint(1,8,4) In [7]: x Out[7]: array([4, 4, 2, 7]) |
| random_integers(low,high,size) |
產生low到high之間(閉區間 [low, high)),size個資料 In [10]: x=np.random.random_integers(2,10,5) In [11]: x Out[11]: array([7, 4, 5, 4, 2]) |
3.散佈圖
x x軸y y軸s 圓點面積c 顏色marker 圓點形狀alpha 圓點透明度 #其他圖也類似這種配置
N=50# height=np.random.randint(150,180,20)# weight=np.random.randint(80,150,20)x=np.random.randn(N)y=np.random.randn(N)plt.scatter(x,y,s=50,c='r',marker='o',alpha=0.5)plt.show()
4.折線圖
# 來源:百度網盤搜尋 http://www.gooln.com
x=np.linspace(-10000,10000,100) #將-10到10等區間分成100份y=x**2+x**3+x**7plt.plot(x,y)plt.show()
折線圖使用plot函數
5.橫條圖
N=5y=[20,10,30,25,15]y1=np.random.randint(10,50,5)x=np.random.randint(10,1000,N)index=np.arange(N)plt.bar(left=index,height=y,color='red',width=0.3)plt.bar(left=index+0.3,height=y1,color='black',width=0.3)plt.show()
orientation設定橫向橫條圖
N=5y=[20,10,30,25,15]y1=np.random.randint(10,50,5)x=np.random.randint(10,1000,N)index=np.arange(N)# plt.bar(left=index,height=y,color='red',width=0.3)# plt.bar(left=index+0.3,height=y1,color='black',width=0.3)#plt.barh() 加了h就是橫向的橫條圖,不用設定orientationplt.bar(left=0,bottom=index,width=y,color='red',height=0.5,orientation='horizontal')plt.show()
6.長條圖
m1=100sigma=20x=m1+sigma*np.random.randn(2000)plt.hist(x,bins=50,color="green",normed=True)plt.show()
# #雙變數的長條圖# #顏色越深頻率越高# #研究雙變數的聯合分布
#雙變數的長條圖#顏色越深頻率越高#研究雙變數的聯合分布x=np.random.rand(1000)+2y=np.random.rand(1000)+3plt.hist2d(x,y,bins=40)plt.show()
7.餅狀圖
#設定x,y軸比例為1:1,從而達到一個正的圓
#labels標籤參數,x是對應的資料列表,autopct顯示每一個地區占的比例,explode反白某一塊,shadow陰影
labes=['A','B','C','D']fracs=[15,30,45,10]explode=[0,0.1,0.05,0]#設定x,y軸比例為1:1,從而達到一個正的圓plt.axes(aspect=1)#labels標籤參數,x是對應的資料列表,autopct顯示每一個地區占的比例,explode反白某一塊,shadow陰影plt.pie(x=fracs,labels=labes,autopct="%.0f%%",explode=explode,shadow=True)plt.show()
8.箱型圖
import matplotlib.pyplot as pltimport numpy as npdata=np.random.normal(loc=0,scale=1,size=1000)#sym 點的形狀,whis虛線的長度plt.boxplot(data,sym="o",whis=1.5)plt.show()
#sym 點的形狀,whis虛線的長度