python 數據可視化 matplotlib
來自專欄猴子聊數據分析4 人贊了文章
開始之前需要導入三個包
import pandas as pdimport numpy as npimport matplotlib.pyplot as plt
生成圖表的方式
1直接生成
plt.plot(np,random.rand(100))plt.show()
2 使用魔法函數可以直接出圖,十分方便
%matplotlib inlineplt.plot(np.random.rand(10))
常用的參數配置
data=np.random.rand(25)data1=np.random.rand(20)plt.plot(data,labels=data)plt.xlable(hahah) #添加行標籤plt.ylable(wiuichen) #添加列標籤plt.title(jjjjjj,y=1.05,fontsize=20) #添加標題,確定標題距離圖表的距離,和大小plt.plot(data1,labels=data1)plt.legend(loc=0) #添加圖例,loc=0是系統自己決定一個最佳位置, 可選擇。
線的樣式設計
data2=np.random.rand(25)plt.plot(data,color=r,linestylex=--,marker=o)plt.plot(data1,color=b,linestylex=-.,marker=^)plt.plot(data2,color=y,lw=1,marker=o)plt.grid() #顯示網格,color確定線的位置,linestyle確定線的風格,marker確定折點的形狀,lw確定線的寬度。
常見的圖表
- 1條形圖
x=[1,5,6,8,8]y=[5,8,5,3,7]plt.bar(x,y,color=r)
x=[1,5,6,8,8]y=[5,8,5,3,7]plt.barh(x,y,color=b)
y1=[1,3,5,7,9]plt.bar(x,y)plt.bar(x,y1,bottom=y,color=r)
- 2直方圖
data3=np.random.randn(1000)plt.hist(data3,color=g,bins=12) #bins控制直方圖中直方的數量
plt.figure(figsize=(10,9)) #控制畫布大小x=np.random.randint(1,100,100)xbins=[0,10,20,30,40,50,60,70,80,90,100] #控制行標籤的跨度。plt.hist(x,bins)plt.grid()
- 3箱型圖和散點圖
data=np.random.rand(1000)plt.boxplot(data)plt.grid()
plt.figure(figsize=(10,6))x=np.random.rand(1000)y=np.random.rand(1000)x1=np.random.randn(1000)y1=np.random.randn(1000)plt.scatter(x1,y1)plt.grid()
- 4堆積圖
comp=[1,2,3,4]y1=[55,66,77,88]y2=[48,58,64,76]y3=[30,36,39,49]y4=[69,87,96,120]labels=[小米,華為,vivo,oppo]plt.stackplot(comp,y1,y2,y3,y4,labels=labels)plt.legend()plt.xticks([1,2,3,4],[one,two,three,fouer])plt.grid()
- 5餅圖繪製
plt.figure(figsize=(8,8))size=[15,30,45,100]labels=[小米,華為,vivo,oppo]plt.pie(size,labels=labels,autopct=%1.1f%%,explode=(0.0,0.0,0.0,0.1),startangle=90,shadow=True)plt.grid()#autopct=%1.1f%%是為了顯示餅圖中的數字,explode是為了控制哪個圖分離,startangle是為了餅圖的顯示shadow是顯示陰影。
多圖繪製
plt.figure(figsize=(8,8))x=[1,2,3,4]y=[2,4,3,7]y1=[5,8,3,6]plt.subplot(2,2,1)plt.plot(x,y)plt.subplot(2,2,2)plt.bar(x,y1)plt.subplot(2,1,2)plt.pie(y1)
- 樣式
matplotlib中有很多現成的樣式,不需要我們調節
查看方式是:
plt.style.available
可以看到樣式有很多,連r語言繪圖工具ggplot都具備,這很強大,對於我這樣懶人來說就是很好的福利了,具體怎麼使用呢
plt.style.use(ggplot)#plt.pie(y1)plt.plot(x,y)plt.text(2,4,top)plt.annotate(last top,(3.5,5),(3,6),arrowprops=dict(facecolor=grey))#plt.text是插入註解,plt.annotate不僅可以插入註解,還可以插入箭頭等。
- 面向對象繪圖
fig,ax=plt.subplots(2,2,figsize=(10,10))#生成一個2行2列的空畫布ax[0][0].plot(x)ax[0][1].hist(x)ax[1][0].pie(np.abs(x[:5]))
第二種辦法
fig=plt.figure(figsize=(10,10))ax1=fig.add_subplot(2,2,1)ax2=fig.add_subplot(2,2,2)ax3=fig.add_subplot(2,1,2)ax1.plot(x)ax2.plot(np.abs(x[:4]))ax1.axhline(-20,color=r,lw=0.51)#插入直線
面向對象繪圖時添加標籤
fig,ax=plt.subplots()ax.hist(x)ax.set_xlabel(wuyuchen)ax.set_ylabel(wwwwwww)ax.set_title(tianli ,fontsize=18)ax.set_xticks([0,5,10])ax.set_xticklabels([low,med,high])
- 共享x軸
x=[1,2,3,4]y=[4,5,8,9]y1=[3,6,2,5]fig,ax=plt.subplots(2,1,sharex=True)ax[0].bar(x,y)ax[0].bar(x,y1,bottom=y1)ax[1].plot(x,y)
十分感謝 @日月光華 老師。
推薦閱讀:
※React: 使用 D3 實現可視化故事線
※國內BI工具數據可視化工具有哪些()
※zzz周刊 - 第1058期 - 超能力女兒
※Matplotlib:入門二
※Matplotlib庫學習