[轉]matplotlib - plt.rcParams、matshow/cmap/坐標軸設置


 

 

 

 

 

 

轉自: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。

 

畫出來的圖的顏色就是下面這樣的:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM