python 數據可視化 matplotlib

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)#插入直線

這是使用fivethirtyeight風格畫的圖

面向對象繪圖時添加標籤

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庫學習

TAG:數據可視化 | 可視化 | Python |