问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Matplotlib绘图时如何设置图像大小和分辨率

创作时间:
作者:
@小白创作中心

Matplotlib绘图时如何设置图像大小和分辨率

引用
CSDN
1.
https://blog.csdn.net/sinat_32570141/article/details/108869141

在使用Matplotlib进行绘图时,如何设置图像的大小和分辨率是一个常见且重要的问题。本文将详细解释绘图图像尺寸、保存图像尺寸、显示图像尺寸和打印图像尺寸之间的关系,并提供具体的设置建议。

绘图图像的尺寸

在Matplotlib中绘制图像时,可以通过Figure类的figsizedpi参数来控制图像的大小和分辨率。

  • figsize参数提供一个float 2元元组(width, height),默认单位是英寸(inches),定义了图像的物理尺寸。
  • dpi参数提供一个整数,表示图像的分辨率,即每英寸距离上的点数(Dots per inches)。这个点实际是一个很小的正方形方块,对应打印时的dot、屏幕显示时的pixel,以及图像尺寸中的像素。

在Windows中,通常用像素来表示图像的大小。以宽度为例,像素的计算公式为:

width * dpi

下面是一个使用Matplotlib绘制图像并保存为PNG文件的示例代码:

import numpy as np
from matplotlib.backends.backend_agg import FigureCanvasAgg
from matplotlib.figure import Figure
from numpy import math

fig = Figure(figsize=(4, 2),
             dpi=96,
             facecolor=(249 / 256, 244 / 256, 206 / 256),
             edgecolor=(82 / 256, 101 / 256, 155 / 256),
             frameon=True,
             )
canvas = FigureCanvasAgg(fig)
fca = (249 / 256, 244 / 256, 206 / 256)
fcb = (138 / 256, 176 / 256, 209 / 256)
ax_a = fig.add_subplot(111, facecolor=fcb)
x = np.arange(0, 2 * math.pi, 0.001)
y = np.sin(x)
ax_a.plot(x, y, color='r')
s, (width, height) = canvas.print_to_buffer()
from PIL import Image
im = Image.frombytes("RGBA", (width, height), s)
im.show()
canvas.print_figure('DPI_PPI.jpg')

上面的代码绘制了一个width = 4 inches, height=2 inches, dpi = 96的图像。黄色的矩形表示figure的大小,蓝色的是axes。

在PS中查看该图像的大小:

96 * 4 = 384
96 * 2 = 192

这就是图像像素大小的由来。

打印尺寸

如果按照100%比例打印,得到的图片大小为:

4 * 2.54 = 10.16 cm
2 * 2.54 = 5.08 cm

屏幕显示尺寸

在屏幕上查看这幅图像时,实际显示的大小与屏幕的分辨率(PPI)和显示比例(scale)有关。

假设屏幕的PPI也是96,显示比例是100%,这幅图像在屏幕上占据的空间为:

10.16 cm * 5.08 cm

如果屏幕的分辨率是72 PPI,显示比例是100%,这幅图像在屏幕上占据的空间为:

10.16 * (96 / 72)
5.08 * (96 / 72)

假设图像的显示比例是scale,换算公式为:

width * (dpi / ppi) * scale
height * (dpi / ppi) * scale

设置Figure尺寸的建议

根据图像的用途,可以采用以下建议:

  • 仅用于屏幕展示:将dpi设置为96(目前一般屏幕的分辨率),width和height默认即可。在大屏幕上展示时,可以根据屏幕的实际尺寸按比例设置。
  • 用于一般打印输出:将dpi设置为200-300,width和height尺寸根据文章的排版格式设置,例如A4纵向一栏时,width < 15cm,height < 22cm。
  • 用于高质量印刷出版:根据出版商的要求设置。

绘图元素的尺寸

在绘图时,绘图元素的大小设置也需要注意。以线宽为例,Matplotlib默认参数是dpi = 72,线宽是1.5 points。在Matplotlib中,每英寸点数(ppi)为72,因此1 point宽的线将是1/72英寸宽,12点的文本将是12/72英寸高,即0.3527 mm。这是一个绝对单位,与cm、mm等单位类似。

如果你将figure的dpi设置为144,在一个point宽中将有两个像素pixel,图像100%比例在屏幕上显示时看起来就有默认的两倍宽。

总结

绘图图像尺寸、保存图像尺寸、显示图像尺寸和打印图像尺寸之间的逻辑关系如下图所示:

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号