我正在使用getdist
绘制一些模拟结果。
在jupyter
中仅写此行
g = plots.getSubplotPlotter()
g.triangle_plot([samples, samples2], filled=True)
Python将显示here中的图。
现在,如果我们想用Python shell编写并使用IDLE
运行它,则不会产生任何绘图。 plt.show()
在这里不起作用。
如何指示python或matplotlib显示图并保存?
答案 0 :(得分:1)
问题是getdist
将后端设置为Agg
(在this line中),这是一个非交互式后端,因此无法通过plt.show()
生成交互式图形。
这是非常糟糕的样式,因为用户应该选择后端而不是程序包。您可能想将这个设计缺陷告知开发人员。
无论如何,在导入getdist后,可以通过plt.switch_backend(..)
切换后端。作为后端,您需要使用任何可用的交互式后端,例如"Qt5Agg"
或"TkAgg"
。
import numpy as np
from getdist import plots, MCSamples
import matplotlib.pyplot as plt
plt.switch_backend("Qt5Agg")
# .. some code ..
g = plots.getSubplotPlotter()
g.triangle_plot([samples, samples2], filled=True)
plt.show()