matplotlib 設置圖形大小時 figsize 與 dpi 的關係

matplotlib 中設置圖形大小的語句以下:python

fig = plt.figure(figsize=(a, b), dpi=dpi)

其中:ide

  • figsize 設置圖形的大小,a 爲圖形的寬, b 爲圖形的高,單位爲英寸
  • dpi 爲設置圖形每英寸的點數

則此時圖形的像素爲:spa

px, py = a*dpi, b*dpi  # pixels # e.g. # 6.4 inches * 100 dpi = 640 pixels

也就是說,同一像素尺寸的圖形(好比 1200 * 600)能夠有任意種不一樣的組合,好比:code

figsize=(15,7.5), dpi= 80 figsize=(12,6)  , dpi=100 figsize=( 8,4)  , dpi=150 figsize=( 6,3)  , dpi=200 etc.

但這些不一樣的組合,有什麼區別呢?這取決於圖中元素的大小。orm

 

線條,標記,文本等大多數元素都有以磅爲單位的大小。Matplotlib 中 每英寸點數(ppi)爲72,則寬度爲 1 點的線將爲 1/72 英寸寬,使用 fontsize 12 點的文本將是 12/72 寸高。blog

爲了便於說明,用 matplotlib繪製相應的圖形,如 表1 所示。圖片

 

若是以英寸爲單位更改圖形大小,而 dpi 不變,較大的圖形仍具備相同的元素大小。所以,改變圖形尺寸就像拿一張不一樣尺寸的紙張同樣,這樣作固然不會改變用同一筆繪製的線條的寬度。經過表 1 中的圖形2, 4, 6 的對比,能夠明顯的看出來這一點。utf-8

 

另外一方面,更改dpi會縮放元素。在72 dpi時,1 寬度的線是 1 像素。在144 dpi時,這條線就是 2 像素。所以,更大的dpi就像放大鏡同樣。全部元素都經過鏡頭的放大倍數進行縮放。 經過表 1 中的圖形 1 3 5 的對比,能夠看出這一點。it

 

綜上:table

  • 圖形尺寸(figsize)肯定圖形的大小(以英寸爲單位)。 這給出了軸(和其餘元素)在圖中的空間量。 較大的圖形尺寸將容許顯示更長的文本,更多的軸或更多的標記標籤(表1中圖形3與圖形4,圖形5與圖形6的對比可看出,像素尺寸相同時,圖形尺寸越大,所能容納的內容越多)。
  • dpi 肯定了圖形每英寸包含的像素數,圖形尺寸相同的狀況下, dpi 越高,則圖像的清晰度越高(表1中 1,3,5 對比可看出)
表1 

 

 

 

 

 5

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

易混亂的點

由表 1 中的 1,3,5 對比可看出,明明是相同尺寸的圖片,可顯示出來大小卻差別極大,是否是說明 figsize 的設置根本沒用?

這主要是由於圖形在屏幕中的顯示是以像表爲基準的,像素點越高,尺寸看起來也就越大。表 1 中的 1,3,5,其 尺寸相同, dpi 越大,則像素也就越大,所以圖形整個看起來也就越大。

 

爲了驗證這個問題,能夠將上述 6 個圖形插入到 word 中,以下圖所示。從圖中可看出,figsize 相同的圖形,其大小相同,只不過 dpi 越高,圖像越清晰。也就是說 figsize 的設置能夠在打印或者排版時發揮做用。

 

最後,附上畫圖的相關代碼供參考:

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2019/1/27 14:47 # @Author : 木子識時務 # @Site :  # @File : 圖形尺寸設置 # @Software: PyCharm


import matplotlib.pyplot as plt def plot(fs, dpi_set): plt.figure(figsize=fs, dpi=dpi_set) plt.title("size:{}, dpi:{}".format(fs, dpi)) plt.plot([0, 1, 2, 3], [3, 4, 2, 5]) plt.savefig(str(fs) + "-" + str(dpi_set) + ".png") if __name__ == "__main__": figsize = (2, 2) for i in range(1, 4): plot(figsize, i*72) for i in [2, 4, 6]: plot((i, i), 72)
畫圖程序
相關文章
相關標籤/搜索