【问题标题】:plt.savefig() in Python crashes with .jpg format even after installing pillowPython 中的 plt.savefig() 即使在安装了枕头后也会以 .jpg 格式崩溃
【发布时间】:2020-05-05 12:02:21
【问题描述】:

我正在尝试使用plt.savefig() is python 以 jpg 或 jpeg 格式保存图形,但我一直遇到此错误:

File "/home/user/.local/lib/python3.7/site-packages/matplotlib/backends/backend_gtk3.py", line 468, in set_cursor
    self.canvas.get_property("window").set_cursor(cursord[cursor])

AttributeError: 'NoneType' object has no attribute 'set_cursor'

Pillow 已安装,这些是我的计算机上 matplotlib 3.2.1 支持的假定图像格式: (支持格式:eps、jpeg、jpg、pdf、pgf、png、ps、raw、rgba、svg、svgz、tif、tiff)

该代码适用于 pdf 或 png 等其他格式。 这是我的代码(非常简单):

import matplotlib.pyplot as plt
plt.plot([0, 1, 2, 3, 4], [0, 3, 5, 9, 11])
plt.xlabel('Months')
plt.ylabel('Books Read')
plt.savefig('/home/azza/Desktop/book.jpg')

【问题讨论】:

  • 我无法重现您的错误。所以我认为它一定与您的设置有关。
  • 你能plt.show() 还是这也会产生错误?
  • 没有 plt.show() 工作正常 :(

标签: python matplotlib


【解决方案1】:

如果您不打算使用plt.show(),则只需添加以下内容:

import matplotlib
matplotlib.use('Agg')

book.jpg:

编辑:

查看我下面评论中链接到的文档

除非绝对必要,否则应避免显式调用 use()。

相反,您可以在与脚本相同的目录中创建一个matplotlibrc 文件,然后通过将backend : Aggbackend : TkAgg 添加到该文件来更改后端。

【讨论】:

  • 旁注:如果您确实打算在任何时候显示无花果,请使用TkAgg 而不是普通的Agg。跨度>
  • 哦,我明白了,非常感谢。但是你知道为什么我不能在不添加 matplotlib.use('TkAgg')matplotlib.use('Agg') 的情况下将数字保存为 jpg 吗?
  • 我猜您默认使用的是不支持编写 jpeg 文件的后端。您可能正在使用交互式后端。更多详情请看这里:matplotlib.org/faq/usage_faq.html#what-is-a-backend
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-21
  • 1970-01-01
  • 2016-04-09
  • 2016-01-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-03
相关资源
最近更新 更多