Python數據分析之matplotlib繪圖詳解

多子圖

figure是繪制對象(可以理解為一個空白的畫佈),一個figure對象可以包含多個Axes子圖,一個Axes是一個繪圖區域,不加設置時,Axes為1,且每次繪圖其實都是在figure上的Axes上繪圖。

我們是在圖形對象上面的Axes區域進行作畫

1.add_axes():添加區域

2.Matplotlib定義一個axes類,該類的對象稱為axes對象(即軸域對象),它指定一個有數值范圍限制的繪圖區域。再給定一個畫佈中,可以包含多個axes對象,但是同一個axes對象隻能在一個畫佈中使用。

2D 繪制區域(axes)包含兩個軸(axis)對象

語法:

add_axes(rect)

該方法用來生成一個axes軸域對象,對象的位置參數由參數rect決定。

rect是位置參數,接受一個由4個元素組成的浮點數列表,形如[left,bottom,width,height],它表示添加到畫佈中的矩形區域左下標(x,y),以及寬度和高度

fig=plt.figure(figsize=(4,2),facecolor='g')
#ax1從畫佈起始位置繪制,寬高和畫佈一致
ax1=fig.add_axes([0,0,1,1])
#ax2從畫佈20%的位置開始繪制,寬高是畫佈的50%
ax2=fig.add_axes([0.2,0.2,0.5,0.5])
ax3=fig.add_axes([0.0,0.5,0.5,0.5])
ax3.plot([1,2,3,4,6],[2,3,5,8,9])
ax1.plot([1,2,3,4,6],[2,3,5,8,9])
ax2.plot([1,2,3,4,6],[2,3,5,8,9])

註意:每個元素的值是畫佈寬度和高度的分數。即將畫佈的寬、高作為一個單位。比如,[0.2,0.2,0.5,0.5],它代表從畫佈20%的位置開始繪制,寬度是畫佈的50%

fig=plt.figure()
#創建區域1
ax1=fig.add_axes([0,0,1,1])
#區域1作畫
plt.plot([1,2,3,4,6],[2,3,5,8,9])
#創建區域2
ax2=fig.add_axes([0.2,0.2,0.5,0.5])
#區域2作畫
plt.plot([1,2,3,4,6],[2,3,5,8,9])

subplot():均等地劃分畫佈,隻是創建一個包含子圖區域的畫佈(返回區域對象)
subplots():既創建一個包含子圖區域的畫佈,又創建瞭一個figure的圖形對象(返回圖形對象和區域對象)

散點圖

matplotlib.pyplot.scatter(s,y,s=None,marker=None,camp=None,norm=None,vmin=None,vmax=None,aipha=None,linewidths=None,edgecolors=None,plotnonfinite=False,data=None,*kwargs)

  • x,y散點坐標
  • s散點面積
  • c散點顏色(默認為藍色,‘b’,其餘顏色同plt.plot())
  • marker散點樣式(默認為實心圓)
  • alpha散點透明度([0,1]之間的數,0表示完全透明,1表示完全不透明)
  • linewidths散點的邊緣線寬
  • edgecolors散點的邊緣顏色
  • camp(Colormap,默認None,標量是一個colormap的名字,隻有c是一個浮點數組時才使用)
#x軸數據
x=np.array([1,2,3,4,5,6,7,8])
#y軸數據
y=np.array([]1,4,9,16,7,11,23,18)
#生成一個[0,1)之間的隨機浮點數或N維浮點數組
print((20*np.random.rand(8)**2)

a=(20*np.random.rand(8))**2
plt.scatter(x,y,s)
plt.show()

自定義點的顏色和透明度

x=np.random.rand(50) #rand()生成一個[0,1)之間的隨機浮點數或 N維浮點數組
#y軸數據
y=np.random.rand(50)
#生成一個浮點數組,取值范圍,正態分佈的隨機樣本數
s=(10*np.random.randn(50))**2
#顏色可以使用一組數字序列
#如隻需要3中顏色
#color=np.resize(np.array([1,2,3]),100)
#顏色隨機
color=np.random.rand(50)
plt.scatter(x,y,s,c=color.alpha=0.5![請添加圖片描述](https://img-blog.csdnimg.cn/485575db5ab44419a8c885c2ed2fc7e6.jpeg)
)

水平柱狀圖

#引入Matplotlib
from matplotlib import pyplot as plt
import numpy as np
#設置中文字體
plt.rcParams['font.sans-serif']=['SimHei']
#中文負號
plt.rcParams['axes.unicode_minus']=False
#設置分辨率100
plt.rcParams['figure.dpi']=100
#設置大小
plt.rcParams['figure.figsize']=(5,3)

調用Matplptlib的barh()函數可以生成水平柱狀圖

barh()函數的用法與bar()函數的用法基本一樣,隻是在調用barh()函數使用y參數傳入Y軸數據,使用width參數傳入代表條柱 寬度的數據。

plt.barh(y,width,height=0.8,left=None,*,align=‘center’,**kwargs)

countries=['挪威','德國','中國','美國','瑞典']
#金牌個數
gold_medal=np.array([16,12,9,8,8])
#y軸為國傢,寬度為獎牌個數
plt.barh(countries,width=gold_medal)

同位置柱狀圖

#國傢
countries=['挪威','德國','中國','美國','瑞典']
#金牌個數
gold_metal=[16,12,9,8,8]
#銀牌個數
silver_medal=[8,10,4,10,5]
#銅牌個數
bronze_metal=[13,5,2,7,5]

#1.將x軸轉換為數值x=np.arange(len(countries))
print(x)
#2.設置圖像寬度
width=0.2
#=======確定x起始位置=====
#金牌起始位置
gold_x=x
#銀牌起始位置
sliver_x=x+width
#銅牌起始位置
bronze_x=x+2*width

#==============分別繪制圖形
#金牌圖形
plt.bar(gold_x,gold_medal,width=width,color='gold')
#銀牌圖形
plt.bar(silver_x,silver_medal,width=width,color='silver')
#銅牌圖形
plt.bar(bronze_x,bronze_medal,width=width,color='saddlebrown')

#=====將x軸的坐標變回來
#註意x標簽的位置居中
plt.xticks(x+width,labels=countries)
#------顯示高度文本-------
for i in range(len(countries)):
	#金牌文本設置
	plt.text(gold_x[i],gold_medal[i],va="bottom",ha="center")
	plt.text(silver_x[i],silver_medal[i],va="bottom",ha="center")
	plt.text(bronze_x[i],bronze_medal[i],va="bottom",ha="center")

到此這篇關於Python數據分析之matplotlib繪圖詳解的文章就介紹到這瞭,更多相關Python matplotlib繪圖內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: