修改Matplotlib图表DPI时出现布局变形的问题咨询
Matplotlib修改DPI导致图表布局变形问题
仅修改图表DPI时发现绘图出现“变形”情况。原本以为DPI完全不会影响图表/坐标轴内元素的布局,希望有人解惑。
最小可复现示例(MWE)
创建两个数据和figsize完全相同的图表,用不同DPI渲染(改变像素数量)。可以看到高DPI版本的图例框(以及文本大小)在图表中占据了更多垂直空间;当DPI值更高时(如450),图例框甚至会比坐标轴区域还高,图表严重变形。
import matplotlib.pyplot as plt import numpy as np x = np.array([1, 3, 5, 9, 11]) y_vals = [x*n for n in np.arange(0.5, 1.5, 0.1)] # Random data for visualization purposes dpi_lst = [150, 300] for dpi in dpi_lst: fig = plt.figure(figsize=(4, 3), dpi=dpi) ax = fig.subplots() for n, y in enumerate(y_vals): ax.plot(x, y, label=f'Plot #{n}') ax.legend(loc='upper left') ax.set_title(f'DPI={dpi}') ax.grid() plt.show()
这可能又是dpi与figsize的讨论,但根据相关帖子及我的Matplotlib使用经验(除图例外),一直认为figsize会改变图表内部布局,而DPI仅缩放渲染分辨率。
这给我带来了困扰:用交互式绘图调整出满意的布局,但保存时需要更高DPI以提升画质;但高分辨率下交互式绘图很麻烦,图表常超出屏幕,不知如何在低分辨率预览时保证与高分辨率保存的布局完全一致。
编辑
- 在MWE中添加了标题代码
- 检查了使用的后端是Qt5Agg(
print(matplotlib.rcParams['backend'])),Matplotlib版本为3.5.3(因3.6.0有问题而使用)。运行上述代码后,得到的绘图窗口中图例框高度不同,请问为何会出现这种差异?
内容的提问来源于stack exchange,提问作者Arce11
相关产品推荐
相关产品推荐

