【问题标题】:matplotlib savefig() blank - show() isn'tmatplotlib savefig() 空白 - show() 不是
【发布时间】:2012-10-21 13:42:00
【问题描述】:

我浏览了“可能已经有你答案的问题”,如果有的话……我不明白。

我试图尽可能多地消除并将我的问题简化为以下代码(我很抱歉 - 我确信有一种更优雅的方式来获取所有 40 的 numpy 数组,但这就是我撞了我的头后想出了....):

import numpy
import matplotlib.pyplot as plt

x=numpy.zeros((500,256))
x+=40
plt.title("Title")
plt.xlabel("Label")
plt.ylabel("Label")
plt.imshow(x,vmin=37.5,vmax=42.5, cmap='spectral')

#save the figure
filename="/xxx/yyy/matplotlibtest.jpg"
plt.savefig(filename)
plt.show()
plt.close()

plt.savefig() 返回一个非常漂亮的图像,带有我的标签、轴,没有图形(即矩形是空白的)

plt.show() 向我展示了以上所有内容,其中包含一个漂亮的绿色矩形,在我的轴之间,它应该是。我可以手动将这个图保存到同一个目录,得到我期望的结果(即轴、标签、绿色矩形)。

我已经尝试过不使用 show() 或第二次调用 show(),因为此处(和其他地方)的一些问题和答案似乎暗示调用顺序可能是问题所在。

我已将此代码中的其他数字(相同数据的直方图)保存为 jpg 的,所以我知道这台计算机可以保存为 jpg。

我不确定我在使用 savefig 时做错了什么 - 有什么建议吗?

谢谢!

【问题讨论】:

  • 我刚刚在另一台工作的计算机上测试了这段代码。它不起作用的系统是 Ubuntu 10.04,我的帐户是未清洗大众的一部分(没有特权)。我假设这意味着它是 Ubuntu 后端的东西,尽管它很乐意为我保存直方图的 jpg 格式。

标签: python matplotlib


【解决方案1】:

通过添加:

import matplotlib
matplotlib.use('TkAgg')

在我打电话之前

import matplotlib.pyplot as plt

我能够让一切顺利进行。

(我还不明白后端,很清楚!)

【讨论】:

  • 我也真的不明白。我可以运行带有绘图功能的脚本,按预期工作。如果我从其他地方调用这个绘图函数,我会得到与你类似的行为。 plt.show() 弹出一个空白窗口。我在另一个地方运行 PyQt5,这就是为什么我真的很困惑为什么 use('TkAgg') 应该在这里提供帮助,即使我们有一个 Qt5 的参数......当我关闭绘图窗口时,我得到了大量的错误在我的终端上,它看起来像黑夜一样丑陋。看来我现在不得不忍受这种情况。
猜你喜欢
  • 1970-01-01
  • 2011-12-15
  • 2022-11-12
  • 2012-02-19
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多