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!
推薦閱讀:
- python使用Matplotlib繪制多種常見圖形
- 手把手教你用Matplotlib實現數據可視化
- Python用 matplotlib 繪制柱狀圖
- Python Matplotlib數據可視化模塊使用詳解
- Python繪圖之詳解matplotlib