【问题标题】:How does one set keyword "block" in plt.show() equal to True by default?plt.show() 中的一组关键字“block”如何默认等于 True?
【发布时间】:2022-05-02 02:14:12
【问题描述】:

出于某种原因,我需要将关键字“block”明确设置为 True,以便在我从 bash shell 运行脚本时显示绘图。 (当我从 ipython shell 运行它时,我不需要它)。我怎样才能将该参数默认设置为 True,因为几乎每个人似乎都有它?

示例:

import matplotlib.pyplot as plt

plt.plot([1,2,3], [1,2,3])

plt.show(block=True) 

即使该参数未明确设置为 True,我也希望显示图表,即:

import matplotlib.pyplot as plt

plt.plot([1,2,3], [1,2,3])

plt.show() 

我的 matplotlibrc 包含:

后端:MacOSX

互动:真

工具栏:工具栏2
时区:UTC

【问题讨论】:

  • 默认的阻塞行为由plt.ion()是否被调用来设置。
  • 另外,您是否更改了 rcparams 文件中的 interactive 键?
  • 谢谢,@tcaswell 你能详细说明一下吗?我没有调用 plt.ion()。你在我的问题中有我的完整代码。我想我下载了我在某处找到的 rcparams 文件。我会尽力找到那个文件并通知你。
  • @tcaswell 我已经用我的 matplotlibrc 文件中包含的一些信息编辑了我的答案。交互式设置为 True。这是什么意思?
  • 删除交互式条目(或将其设置为false),它将按预期工作

标签: matplotlib


【解决方案1】:

mpl 的“交互”模式决定了plt.show 的行为。如果处于“交互”模式,则假定有其他东西管理 GUI 事件循环。使用

运行脚本时
python -i script.py

会将您放入交互式外壳中。当位于 REPL 中时,python REPL 循环和 GUI 事件循环之间存在集成,允许 GUI 循环在后台运行,这使得图形“交互”。如果在这种情况下打开“交互”模式,则在关闭图窗之前不会收到提示。

可以通过调用plt.ion() 或在matplotlibrc 中设置'interactive' 键来启用“交互”模式。

我强烈建议您将 rcparam 值保留为 False

【讨论】:

  • 这一直困扰着我,谢谢。
【解决方案2】:
kwargs = dict(type='candle',mav=(10),volume=True,figratio=(11,8),figscale=0.85, block=True)

mpf.plot(dfless, **kwargs, style='classic')

把它放在 kwargs 里面对我来说效果很好

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 2013-12-10
    • 2019-11-14
    相关资源
    最近更新 更多