Python 在matplotlib中将地物大小设置为大于屏幕大小

Python 在matplotlib中将地物大小设置为大于屏幕大小,python,matplotlib,figure,Python,Matplotlib,Figure,我试图在matplotlib中创建一些在期刊文章中读得很好的图形。我有一些较大的数字(带有子图形),我希望在纵向模式下占据几乎整个页面(具体来说,美国信纸上有6.5“x9”的全页数字,边距为1英寸)。我可以使用figsize参数轻松设置图形大小。但是,如果我将图形大小设置为大于屏幕大小,则图形会被压缩(我正在使用13英寸的笔记本电脑);具体来说,高度是一个问题。只要下面的height参数大于我的屏幕高度,保存的图形的尺寸就不会改变: height = 9 fig, ax = plt.subplo

我试图在
matplotlib
中创建一些在期刊文章中读得很好的图形。我有一些较大的数字(带有子图形),我希望在纵向模式下占据几乎整个页面(具体来说,美国信纸上有6.5“x9”的全页数字,边距为1英寸)。我可以使用
figsize
参数轻松设置图形大小。但是,如果我将图形大小设置为大于屏幕大小,则图形会被压缩(我正在使用13英寸的笔记本电脑);具体来说,高度是一个问题。只要下面的
height
参数大于我的屏幕高度,保存的图形的尺寸就不会改变:

height = 9
fig, ax = plt.subplots(3, 2, figsize=(6.5, height))
plt.savefig('test.png') # size of this figure is independent of height
                        # if height > height of my screen

如何使
matplotlib
即使超出屏幕尺寸,也能使用请求的图形大小?我正在使用spyder。

这可能是打印生成后端的问题

您可以通过运行以下命令查看正在使用的后端:

导入matplotlib;matplotlib.get_backend()

尝试将后端更改为其他内容,例如:

import matplotlib

matplotlib.use('Agg')

请注意,在导入
matplotlib.pyplot

可能不是理想的解决方案,但是您可以将其另存为SVG文件吗,然后在Inkscape之类的东西中打开并导出为适当质量的PNG文件?@AndrewGuy刚刚用
test.svg
而不是
test.PNG
尝试了
height=9
height=10
,结果文件是相同的。您使用的是什么后端?运行
导入matplotlib;matplotlib.get_backend()
。例如,运行
import matplotlib;matplotlib.use('Agg')
在脚本的开头。问题是这里使用了spyder。如果从CLI以脚本形式运行代码,它将按预期工作。Spyder在默认情况下打开交互模式,因此在调用
savefig
之前,该图形将“显示”。显示后,它会调整大小以匹配屏幕。使用
agg
后端是一种解决方案,因为它不能显示任何内容。关闭spyder选项中的“matplotlib支持”是另一个选项。另外,可能只是添加
plt.ioff()
就可以了(未经测试)。对我来说不起作用。我得到
UserWarning:Matplotlib当前正在使用agg,这是一个非GUI后端,因此无法显示图形。plt.show()
@Forklift17是的,如果您试图以内联方式显示绘图,而不是保存到文件中,这是预期的行为。有关更多详细信息,请参见此问题-