【问题标题】:pass multiple matplotlib plots to parent and plot them in separate figures in Python3将多个 matplotlib 图传递给父级并在 Python3 中将它们绘制在单独的图中
【发布时间】:2019-11-07 13:21:09
【问题描述】:

我有一些函数MyPlot 使用matplotlib.pyplot as plt 计算自定义绘图。 它当前将plt.figure 对象返回给父函数。 在这个父函数中,我多次调用MyPlot 来制作多个数字,比如fig1fig2。 如何使用父函数中的单个命令将它们绘制在单独的窗口中?

我尝试导入matplotlib.pyplot as plt,然后执行plt.show(),但它不起作用;它根本没有显示任何情节。 我也尝试了plt.show(fig1) 绘制fig1,但plt.show(fig1, fig2) 抛出错误。

【问题讨论】:

  • 也许您处于交互模式 (plt.isinteractive())?在这种情况下,您可以通过plt.show(block=True) 获得阻止show
  • @ImportanceOfBeingErnest plt.isinteractive() 返回False,但plt.show(block=True) 确实工作,如果我通过plt.show(block=False),它就不起作用。奇怪!
  • 我担心没有minimal reproducible example,无法找出确切的原因
  • @ImportanceOfBeingErnest 呃,当我尝试创建一个最小的可重现示例时,它又开始工作了。一定是一些奇怪的边缘情况或我的 IDE 的特殊性或其他什么。我现在只使用 block=True,谢谢你的帮助。
  • 可能与我两次导入 pyplot(MyPlot 在不同的模块中)有关这一事实

标签: python-3.x matplotlib figure


【解决方案1】:

编辑:这个答案是错误的。似乎plt.show(arg) 绘制了任意参数argNone 除外)的数字,但如果没有传递任何参数,则不会。

原答案:

plt.show(fig1, fig2) 中的直觉是正确的,但语法是错误的。 显示matplotlib.pyplot.figure 对象的列表(或其他可迭代)将在单独的窗口中绘制图形:

plt.show([fig1, fig2])

【讨论】:

  • plt.show() 不接受数字作为参数。因此plt.show([fig1, fig2])plt.show(["Hello", "Bye"]) 或您想象的任何其他内容相同。这在未来可能会改变,但现在这个答案没有意义。
  • @ImportanceOfBeingErnest 呵呵,你是对的。但是,如果我 not 传递任何参数,它不会绘制任何东西!为什么?
猜你喜欢
  • 2017-09-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多