在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_height
和 value_width
以英寸为单位。对我来说这是最实用的方法。
【讨论】:
这只是增加数字,而不是包含它的窗口。 matplotlib 拥有有史以来最糟糕的 API 之一,问题是,它是 python 中唯一最容易学习的工具。以上是关于在matplotlib中更改图形大小和图形格式[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Matplotlib 图形在 Tkinter GUI 中正确滚动+调整大小
如何在 ipython 笔记本中设置 matplotlib 图形默认大小?