在matplotlib中更改图形大小和图形格式[重复]

Posted

技术标签:

【中文标题】在matplotlib中更改图形大小和图形格式[重复]【英文标题】:Change figure size and figure format in matplotlib [duplicate] 【发布时间】:2013-06-11 04:03:29 【问题描述】:

我想获得 4 x 3 英寸大小的 fig1,并以 tiff 格式更正以下程序:

import matplotlib.pyplot as plt

list1 = [3,4,5,6,9,12]
list2 = [8,12,14,15,17,20]

plt.plot(list1, list2)
plt.savefig('fig1.png', dpi = 300)
plt.close()

【问题讨论】:

将文件名中的扩展名从 .png 更改为 .tif 会创建真正的 tiff 图像吗? 【参考方案1】:

第一部分(明确设置输出大小)并不难:

import matplotlib.pyplot as plt
list1 = [3,4,5,6,9,12]
list2 = [8,12,14,15,17,20]
fig = plt.figure(figsize=(4,3))
ax = fig.add_subplot(111)
ax.plot(list1, list2)
fig.savefig('fig1.png', dpi = 300)
fig.close()

但是在 matplotlib + tiff 上快速谷歌搜索后,我不相信 matplotlib 可以制作tiff 的情节。有人提到GDK backend 能够做到这一点。

一种选择是使用 imagemagick 的 convert 之类的工具转换输出。

(另一种选择是在这里等到real matplotlib expert 出现并证明我错了;-)

【讨论】:

如果您安装了GDK backend,您可以使用它在本地绘制 tiff。您可能需要安装一些依赖项。 @GWW -- 我看到提到了,但我也看到 this thread 暗示这是一个谎言。当然,这是一个旧线程,所以它可能从那时起就已经修复了。【参考方案2】:

如果显式创建图形,则可以设置图形大小

plt.figure(figsize=(3,4))

调用plt.plot()之前需要设置图形大小 要更改保存图形的格式,只需更改文件名中的扩展名。但是,我不知道任何 matplotlib 后端是否支持 tiff

【讨论】:

将文件名中的扩展名从 .png 更改为 .tif 是否会创建真正的 tiff 图像? 正如我所写,我不知道,但从另一个答案的 cmets 看来,tiff 似乎不受支持 记住plt.figure(figsize=(3,4))需要在调用plt.plot()之前调用【参考方案3】:

您可以通过在创建图形之前添加它来更改绘图的大小。

plt.rcParams["figure.figsize"] = [16,9]

【讨论】:

这正是我需要在 Jupyter Notebook 中使用以使情节更宽的东西。 在 jupyter 笔记本中工作 rcParams 具有强大的可定制性 我使用了这个,我的图像被拉伸了,matplotlib 没有为新的纵横比调整内容。但是,如果我不保存而是在窗口上显示绘图,它就可以工作。有什么线索吗? PL.使用其他一些纵横比(例如:4,3)并更新我。【参考方案4】:

如果您需要在创建后更改图形大小,请使用方法

fig = plt.figure()
fig.set_figheight(value_height)
fig.set_figwidth(value_width)

value_heightvalue_width 以英寸为单位。对我来说这是最实用的方法。

【讨论】:

这只是增加数字,而不是包含它的窗口。 matplotlib 拥有有史以来最糟糕的 API 之一,问题是,它是 python 中唯一最容易学习的工具。

以上是关于在matplotlib中更改图形大小和图形格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何让 Matplotlib 图形在 Tkinter GUI 中正确滚动+调整大小

Matplotlib 不同大小的子图

如何在 ipython 笔记本中设置 matplotlib 图形默认大小?

Python以精确的像素大小保存matplotlib图形

Matplotlib pyqt 导航工具栏更改“图形选项”的背景颜色

Matplotlib:获取子图以填充图形