matplotlib 中设置图形大小的语句以下:python
fig = plt.figure(figsize=(a, b), dpi=dpi)
其中:ide
则此时图形的像素为: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
综上:io
![]() 1 |
![]() 2 |
![]() 3 |
![]() 4 |
![]() 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)