【问题标题】:Can't save a figure of 920px width in matplotlib无法在 matplotlib 中保存 920px 宽度的图形
【发布时间】:2016-04-26 20:42:23
【问题描述】:

我在尝试从 numpy 数据中保存 920 像素宽的 png 时遇到了问题。缺少一列。似乎只有这个宽度会导致问题(我尝试了其他一些但问题没有发生)。 MWE:

import matplotlib.pyplot as plt
import numpy as np
a1 = np.zeros((919, 100))
a2 = np.zeros((920, 100))
a3 = np.zeros((921, 100))
plt.imsave('test1.png', a1)
plt.imsave('test2.png', a2)
plt.imsave('test3.png', a3)

生成的图像的高度均为 100,但宽度为:

  • 测试1:919
  • 测试2:919
  • 测试3:921

这里发生了什么?


版本:

  • matplotlib:1.4.3
  • numpy:1.9.2

【问题讨论】:

  • 只是补充一点:这在 mpl 1.5.1 和 numpy 1.10.4 中是可重现的,jpgpng 也会发生这种情况

标签: python numpy matplotlib


【解决方案1】:

这是一个 matplotlib 错误:https://github.com/matplotlib/matplotlib/issues/4280。显然它是在 2016 年 2 月修复的(可能在 https://github.com/matplotlib/matplotlib/pull/5718),但我认为自从在 master 分支中修复了这个 bug 之后就没有发布了。

解决方法是在imsave 函数中使用参数dpi=1,例如:

plt.imsave("foo.png", a, dpi=1)

但 DPI 为 1 可能会混淆某些读取 PNG 文件的软件。

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 1970-01-01
    • 2013-07-26
    • 2017-10-14
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多