【问题标题】:maplotlib.pyplot.show() works with python but not with jupyter consolematplotlib.pyplot.show() 适用于 python 但不适用于 jupyter 控制台
【发布时间】:2018-03-25 02:31:44
【问题描述】:

我看过this questionalso this one。对我来说,matplotlib.pyplot.show() 显示了来自 python 的图形,而不是来自 jupyter 控制台的图形。

matplotlib.matplotlib_fname() 为两者返回相同的 matplotlibrc 文件位置。

但是,当我尝试找到与 matplotlib.rcParams['backend'] 一起使用的后端时,jupyter 控制台告诉我 - 'module://ipykernel.pylab.backend_inline',无论我修改了要使用的 matplotlibrc 文件是哪个后端。

另一方面,Python 正确显示了我正在使用的后端;目前是“TkAgg”。

我使用 python -mpip install -U matplotlib 安装了 matplotlib。

我正在使用以下版本:

  • Windows 10
  • Jupyter 控制台 5.2.0
  • Python 2.7.14
  • IPython 5.5.0

我可以使用 python,但也可以为 jupyter 控制台解决这个问题。

【问题讨论】:

    标签: python matplotlib jupyter


    【解决方案1】:

    首先请注意plt.show() 按预期工作,也在 Juypter 中。

    这使用默认的'module://ipykernel.pylab.backend_inline' 后端。此后端由 Jupyter 设置,独立于 rcParams 设置。

    您可以使用matplotlib.use()设置后端

    import matplotlib
    matplotlib.use("TkAgg")
    import matplotlib.pyplot as plt
    plt.plot([1,2,3])
    plt.show()
    

    或者只是使用 IPython 魔法%matplotlib backendname

    %matplotlib tk
    import matplotlib.pyplot as plt
    plt.plot([1,2,3])
    plt.show()
    

    您可以使用pyplot.switch_backend()更改后端

    plt.switch_backend("TkAgg")
    plt.plot([1,2,3])
    plt.show()
    

    或使用相同的 IPython 魔法

    %matplotlib tk
    plt.plot([1,2,3])
    plt.show()
    

    如果要设置默认使用的后端,请参阅此问题: Change default backend for matplotlib in Jupyter Ipython

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-21
      • 2013-05-14
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 2014-12-14
      • 2019-09-05
      • 1970-01-01
      相关资源
      最近更新 更多