數據可視化之matlibplot二維繪圖
概括性簡單操作
import matplotlib.pyplot as plt #導入matlibplot庫
fig = plt.figure() #聲明畫板對象,在這個對象上面畫圖,可傳入參數fig = plt.figure(fig_name, figsize=),其中fig_name為str型
ax = fig.add_subplot(221) #聲明Axes對象,里面的221為Axes對象,表示將整個畫板划分為2行*2列的方格,這樣就一共4個子圖,然后1表示這是第一個子圖。也可用ax = plt.subplot(r, c, p)
ax.set(xlim=[0.5, 4.5], ylim=[-2, 8], title='An Example Axes',ylabel='Y-Axis', xlabel='X-Axis') #使用set的方法設置Axes對象xy軸的范圍,軸名稱和標題
x = np.arange(10)
y = np.random.randn(10)
ax.plot(x, y, color='red') #用定義的xy數據,紅線繪圖
plt.show() #繪圖展示
幾個常用函數的函數的具體說明
Axes對象及畫板的操作
Axes對象是來定義軸axis的,二維則限定兩個軸,三維則限定三個軸,所以對每一個Axes對象均可以有以下操作:
set_xlim([xmin, xmax]) 和 set_ylim([xmin, xmax]) #設置XY軸的數值限制,參數 left, right左右段的極值
set_title() #設置對象的標題
set_xlabel() 和 set_ylabel() #設置軸的名字
set_xticks / set_yticks(posi_list) #設置坐標軸點到原點距離,參數是序列
set_xticklabels / set_yticklabels() #設置軸點的名稱,參數是name_list名稱列表和rotation順時針角度
注xticks / yticks、xlabel / ylabel、title、axis可以直接plt. 進行使用
Axes對象加入參數后,像是把畫板划分成了一個矩陣,那是否可以使用二維矩陣的方式進行設置呢?答案是肯定的,可以使用二維數組的方式進行如下設置
fig, axes = plt.subplots(nrows=2, ncols=2,sharex=False, sharey=False,frameon=False) #同時生成畫板和相應子圖區域,sharex表示是否共享x軸,frameon表示是否顯示邊框
axes[0,0].set(title='Upper Left')
axes[0,1].set(title='Upper Right')
axes[1,0].set(title='Lower Left')
axes[1,1].set(title='Lower Right')
布局調整:調整Axes子圖的布局
fig.subplots_adjust(wspace=0.5, hspace=0.3, left=0.125, right=0.9, top=0.9, bottom=0.1) #wspace調整水平間距,hspace垂直向上的距離,left為左邊距,right右邊距,注意這些數值都是百分數,比如右邊距是10%
fig.tight_layout() #自動調整布局
ax.margins(x=0.1, y=0.1) #用於調整子圖的內邊距
邊界調整
ax.spines['top'].set_visible(False) #設置Axes對象的頂邊界不可見,也就是子圖框頂上那根線不可見
2D繪圖
常見的幾種繪圖
plt.plot(X,Y,c=, label=) #直線圖,XY為繪制點的列表,c控制顏色,label控制線條標簽名
plt.scatter(X,Y,s=None, c='r', marker='o', cmap=None, norm=None,label=‘圖例注釋’,alpha=,linewidths,verts,edgcolors,cmap) #散點圖,XY為繪制點的列表,c為顏色,maker為圖標形式,默認圓,norm為數據亮度(0-1范圍內),alpha為透明度,linewidths,verts,edgcolors分別是點的邊緣線寬、xy序列及邊緣顏色,cmap控制漸變色
#繪制空心點可以將c='',然后邊緣填充上顏色這種方式繪制
plt.hist(X,bins=10,range=) #直方圖,bins表示間隔,range是繪制直方圖的范圍
plt.bar / barh(bar_position, bar_height, bar_width) #柱狀圖,控制坐標軸,柱狀高度,柱狀寬
plt.boxplot(data) #箱形圖,data為序列或數組類型
plt.contour() #等高線
plt.contourf() #帶填充的等高線
其他操作
plt.legend() #可以用於設置圖例的邊框、標簽、字體等設置,也可以合並圖例(多圖例顯示)
plt.savefig(r'C:\Users\jichao\Desktop\大論文\12345svm.png', dpi=300) #保存圖片
ax.annotate(s, xy, *args, **kwargs) #注釋文本時使用,s表示文本內容,xy是需要注釋位置(元組型)、xytext:注釋文本的坐標點(元組)、xycoords:被注釋點的坐標系屬性、textcoords :注釋文本的坐標系屬性,arrowprops:箭頭的樣式(字典形式,關鍵字是arrowstyle)等。
3D繪圖
mport matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D