matplotlib視覺化《2》圖形設定與調整
阿新 • • 發佈:2020-08-11
•figure和subplot
matplotlib的影象都是位於figure物件中的,我們可以通過plt.figure建立一個新的figure:
1 fig=plt.figure(figsize=(6,6))#figsize控制畫布的大小
但figure是不能繪圖的,我們需要用fig.add_subplot的方式建立一個或者多個subplot才行:
ax1=fig.add_subplot(211)#表示選中2行1列的第一個畫布 x=np.linspace(0,8,num=50) y1=np.sin(x) ax1.plot(x,y1)
1 ax2=fig.add_subplot(212)#第二塊畫布 2 x=np.linspace(0,8,num=50) 3 y2=np.cos(x) 4 ax2.plot(x,y2) 5 fig
plt.subplots
plt.subplots是更為簡單的方法,可以直接建立多個畫布,直接呼叫即可
1 fig,axes=plt.subplots(2,1,sharex=True,figsize=(7,7))
1 axes#為陣列,所以我們可以用數值索引的方式呼叫
array([<matplotlib.axes._subplots.AxesSubplot object at 0x7f97c0ba9350>, <matplotlib.axes._subplots.AxesSubplot object at 0x7f97ef1eb090>], dtype=object)
1 axes[0].plot(x,y1)#第一塊畫布 2 axes[1].plot(x,y2)#第二塊畫布 3 fig
~plt.subplots_adjust
plt.subplots_adjust(left=None, bottom=None, right=None, top=None, wspace=None, hspace=None
引數含義:
left, right, bottom, top:子圖所在區域的邊界。
當值大於1.0的時候子圖會超出figure的邊界從而顯示不全;值不大於1.0的時候,子圖會自動分佈在一個矩形區域(下圖灰色部分)。
要保證left < right, bottom < top,否則會報錯。
wspace, hspace:子圖之間的橫向間距、縱向間距分別與子圖平均寬度、平均高度的比值。
舉個例子
1 fig,axes=plt.subplots(2,2,facecolor="darkseagreen",figsize=(6,6)) 2 plt.subplots_adjust(left=0.1, wspace=0.1, top=0.9,hspace=0.2) #位置調整
•美圖
~顏色、標記和線型
1 fig,axes=plt.subplots(2,2,facecolor="darkseagreen",figsize=(6,6)) 2 plt.subplots_adjust(left=0.1, wspace=0.1, top=0.9,hspace=0.2) #位置調整 3 axes[0,0].plot(np.random.randn(20).cumsum(),"ro--")#“ro--”簡單表 4 axes[0,1].plot(np.random.randn(20).cumsum(),color="g",linestyle="dashed",marker="o")#展開 5 fig
顏色和線型參考表如下
~標題、刻度、標籤和圖例
標題
1 #整個figure的標題 2 fig.suptitle('我的畫板', fontsize=16, fontweight='bold') 3 #各個畫布的標題 4 axes[0,0].set_title("畫板一") 5 axes[0,1].set_title("畫板二") 6 axes[1,0].set_title("畫板三") 7 axes[1,1].set_title("畫板四") 8 fig
刻度、標籤
1 axes[1,0].plot(x,y1) 2 axes[1,0].set_xticks([0,2,4,6,8])#設定刻度 3 axes[1,0].set_xticklabels(["第一級","第二級","第三級","第四級","第五級"])#給刻度命名 4 axes[1,0].set_xlabel("x的值")#標籤名 5 fig
圖例
1 plt.style.use('ggplot')#設定背景 2 x=np.linspace(0,8,num=50) 3 y1=np.sin(x) 4 y2=np.cos(x) 5 plt.plot(x,y1,"k-",label="sin函式") 6 plt.plot(x,y2,"go--",label="cos函式") 7 plt.title("sin-cos圖") 8 plt.ylabel("y軸") 9 plt.xlabel("x軸") 10 plt.legend()#作圖時加label,這裡才會生成legend