【问题标题】:Change figure size and figure format in matplotlib [duplicate]在matplotlib中更改图形大小和图形格式[重复]
【发布时间】: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 图像吗?

标签: python python-2.7 python-3.x matplotlib


【解决方案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 中唯一最容易学习的工具。
猜你喜欢
  • 2017-11-21
  • 2017-07-05
  • 1970-01-01
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2021-02-26
  • 2015-07-12
相关资源
最近更新 更多