【Python】Matplotlib庫基礎繪圖函數(子繪圖,餅圖、直方圖、玫瑰圖、散點圖、條形圖)

內容來源

中國大學MOOC 《Python數據分析與展示(嵩天)》第二週 單元4、單元5

推薦大家直接去看視頻

子繪圖

1、plt.subplot2grid()

#pyplot 子繪圖區域
import numpy as py
import matplotlib.pyplot as plt

plt.subplot2grid((3,3),(0,0),colspan=3)
plt.subplot2grid((3,3),(1,0),colspan=2)
plt.subplot2grid((3,3),(1,2),rowspan=2)
plt.subplot2grid((3,3),(2,0))
plt.subplot2grid((3,3),(2,1))

在這裏插入圖片描述

2、gridspec.GridSpec()

import matplotlib.gridspec as gridspec

gs =  gridspec.GridSpec(3,3)
ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:,-1])
ax4 = plt.subplot(gs[2,0])
ax5 = plt.subplot(gs[2,1])

在這裏插入圖片描述

兩個代碼畫的圖其實是一樣的:圖片一個是窗口模式,一個是內置模式罷了

餅圖、直方圖、玫瑰圖、散點圖、條形圖

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec

gs =  gridspec.GridSpec(3,3)
ax1 = plt.subplot(gs[0,:])
ax2 = plt.subplot(gs[1,:-1])
ax3 = plt.subplot(gs[1:,-1])
ax4 = plt.subplot(gs[2,0])
ax5 = plt.subplot(gs[2,1])
###################################################################
#1 plt.pie() 餅圖
labels = 'Frogs','Hogs','Dogs','Logs'
sizes = [15, 30, 45, 10]
explode = (0, 0.1, 0, 0)
#plt.pie(sizes,explode=explode)
ax4.pie(sizes,explode=explode, labels=labels,autopct='%1.1f%%',
        shadow=False,startangle=90)
plt.axis('equal')  
plt.show()

#2 plt.hist() 直方圖
np.random.seed(0)
mu, sigma =100, 20  #mean std
a = np.random.normal(mu, sigma, size=100)
#plt.hist(a, 20, normed=1, histtype='stepfilled', facecolor='r', alpha=0.75)#bin 直方的個數  alpha爲透明度
ax2.hist(a, 40, normed=1, histtype='stepfilled', facecolor='r', alpha=0.65)
ax2.set_title('Histogram')
plt.show()

#3 plt.polar()  極座標 南丁格爾玫瑰圖
N = 20
theta = np.linspace(0.0, 2*np.pi, N, endpoint=False)
radii = 10*np.random.rand(N)
width = np.pi/4*np.random.rand(N)
ax = plt.subplot(gs[2,1],projection='polar')  #ax5 = plt.subplot(gs[2,1])
bars = ax.bar(theta, radii, width=width, bottom=0.0)
for r,bar in zip(radii, bars):
    bar.set_facecolor(plt.cm.viridis(r/10.))
    bar.set_alpha(0.5)
plt.show()
'''
theta = np.linspace(0.0, 2*np.pi, N, endpoint=False)
radii = 10*np.random.rand(N)
plt.polar(theta, radii, color="chartreuse", linewidth=2, marker="*", mfc="b", ms=10)
'''

#4 plt.scatter散點圖
ax =  plt.subplot(gs[1:,-1])
ax.plot(10*np.random.randn(100),10*np.random.randn(100),'o')
ax.set_title('Simple Scatter')

plt.show()

#plt.bar(left,height,width,bottom)
ax1.bar(np.arange(20),np.random.rand(20),width=0.8,color='g')
plt.show()


在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章