轉自:https://blog.csdn.net/qq_30815237/article/details/87903024
1、plt.rcParams
plt(matplotlib.pyplot)使用rc配置文件來自定義圖形的各種默認屬性,稱之為“rc配置”或“rc參數”。
通過rc參數可以修改默認的屬性,包括窗體大小、每英寸的點數、線條寬度、顏色、樣式、坐標軸、坐標和網絡屬性、文本、字體等。rc參數存儲在字典變量中,通過字典的方式進行訪問。
代碼:
import numpy as np import matplotlib.pyplot as plt ###%matplotlib inline #jupyter可以用,這樣就不用plt.show() #生成數據 x = np.linspace(0, 4*np.pi) y = np.sin(x) #設置rc參數顯示中文標題 #設置字體為SimHei顯示中文 plt.rcParams['font.sans-serif'] = 'SimHei' #設置正常顯示字符 plt.rcParams['axes.unicode_minus'] = False plt.title('sin曲線') #設置線條樣式 plt.rcParams['lines.linestyle'] = '-.' #設置線條寬度 plt.rcParams['lines.linewidth'] = 3 #繪制sin曲線 plt.plot(x, y, label='$sin(x)$') plt.savefig('sin.png') plt.show()
參數:
plt.rcParams['savefig.dpi'] = 300 #圖片像素 plt.rcParams['figure.dpi'] = 300 #分辨率 plt.savefig(‘plot123_2.png’, dpi=200)#指定分辨率 # 默認的像素:[6.0,4.0],分辨率為100,圖片尺寸為 600&400 # 指定dpi=200,圖片尺寸為 1200*800 # 指定dpi=300,圖片尺寸為 1800*1200 plt.rcParams['figure.figsize'] = (8.0, 4.0) # 圖像顯示大小 plt.rcParams['image.interpolation'] = 'nearest' # 最近鄰差值: 像素為正方形 #Interpolation/resampling即插值,是一種圖像處理方法,它可以為數碼圖像增加或減少象素的數目。 plt.rcParams['image.cmap'] = 'gray' # 使用灰度輸出而不是彩色輸出 plt.axis('off') #打印圖片的時候不顯示坐標軸
from:https://blog.csdn.net/liangzuojiayi/article/details/78184687
更詳細的配置參見:https://my.oschina.net/swuly302/blog/94805
2、matshow函數
這是一個繪制矩陣的函數:matplotlib.pyplot.matshow(A, fignum=None, **kwargs)
A是繪制的矩陣,一個矩陣元素對應一個圖像像素。
例如:plt.matshow(Mat, cmap=plt.cm.gray),cmap代表一種顏色映射方式。
實例:
plt.plot(A, "r-+", linewidth=2, label="train") plt.plot(B, "b-", linewidth=3, label="val") plt.legend(loc="upper right", fontsize=14) # 設置位置 plt.xlabel("Training set size", fontsize=14) # 標簽 plt.ylabel("RMSE", fontsize=14) plt.axis([0, 80, 0, 3])#表示要顯示圖形的范圍 plt.xticks(np.arange(0, 81, step=20))#設置刻度 plt.yticks(np.arange(0, 4, step=1))
Axes - Subplot - Axis 之間到底是個什么關系
用matplotlib.pyplot繪圖需要知道以下幾個概念:
畫圖板/畫布:這是一個基礎載體,類似實際的畫圖板,用pyplot.figure()函數創建,程序中允許創建多個畫圖板,具體操作的畫板遵循就近原則(操作是在最近一次調用的畫圖板上實現),缺省條件下內部默認調用pyplot.figure(1)。
圖形區/繪圖區:用來繪圖的實際區域,一般不直接獲取,直接設定方式為pyplot.axes([x, y, w, h]),即axes函數直接確定了該區域在畫圖板/畫布中的位置為x,y 尺寸為w,h
標簽區:用來展示圖形相關標簽的地方,一般不直接設定(未仔細研究過),該區域根據圖形區進行擴展,與該區域有關聯的函數是pyplot.xlabel()、pyplot.ylabel()、pyplot.title()等
fig = plt.figure() plt.show() ax1 = fig.add_subplot(211) ax2 = fig.add_subplot(212)
用畫板和畫紙來做比喻的話,figure就好像是畫板,是畫紙的載體, 但是具體畫畫等操作是在畫紙上完成的。 在pyplot中,畫紙的概念對應的就是Axes/Subplot。
對比:
figure (1) VS figure()
figure()操作就是創建或者調用畫圖板,缺省情況下系統會創建figure(1)作為畫圖板。使用時遵循就近原則,所有畫圖操作是在最近一次調用的畫圖板上實現。
axes() VS subplot()
pyplot.axes([x, y, w, h])是用來在畫圖板上確認圖形區的位置和大小的函數,x,y表示圖形區左下角相對於畫圖板的坐標,w,h表示圖形區的寬高。(缺省時該操作在figure(1)上操作)
pyplot.subplot(abc)本質也是用來確認圖形區在畫圖板上位置大小的函數,區別是該函數將畫圖板按a行b列等分,然后逐行編號,並選擇編號為c的區域作為圖形區用來繪圖。這是一個axes()操作的高級封裝,方便用戶使用。subplot(233)表示2行3列的第3個位置(即,第1行第三個區域)
同時,pyplot.show()實際展示的區域是畫圖板上所有圖形區的最小包圍區,不是整個畫圖板,即如果僅僅調用了subplot(224)結果只展示右下角的4號區域,而不是1、2、3、4都展示,因此會存在一定的錯覺。
axes() VS axis()
axes([x, y, w, h])用來設定圖形區;
axis([x_left, x_right, y_bottom, y_top])是用來設置所繪制圖形的視窗大小的,表示直接展示的圖形是需要滿足參數中范圍的值,直觀表現是繪圖區實際展示的坐標范圍。
注:axis作用的圖形區依舊遵守就近原則。
subplot() VS plot()
subplot用來生成圖形區;
plot是實際使用的繪圖函數,類似的函數還有hist等,plot操作遵守就近原則,即作用在最近一次使用的圖形區上。
from:https://blog.csdn.net/JasonZhu_csdn/article/details/85860963
官網:https://matplotlib.org/api/_as_gen/matplotlib.pyplot.html
轉自:https://wangyeming.github.io/2018/11/07/matplot-cmap/
畫圖離不開色彩--說說matplot的cmap
一張好看的圖,離不開各種各樣的顏色。在matplot中,有一個cmap的概念,通過cmap,我們可以很方便的給多組數據自動分配色彩,畫出很好看的圖。這篇文章就簡單介紹下cmap的概念和用法。
cmap是什么
cmap也就是colormap,可以理解為接受一個數值,輸出一個指定的顏色的字典。下面這張圖就展示了常見的一些cmap。
可以點擊matplot cmap這里,里面有一個demo示例,會畫一個包含matplot中所有cmap的圖。
這里常見的cmap有:
純色漸變系列:
比如說畫灰度圖的話,可以選擇Greys這個cmap。
畫出來的圖的顏色就是下面這樣的: