【问题标题】:Use both matplotlib inline and qt in jupyter notebook在 jupyter notebook 中同时使用 matplotlib inline 和 qt
【发布时间】:2016-06-30 16:23:28
【问题描述】:

我正在使用 Jupyter(与 IPython)来分析研究数据以及导出数据。我真的很喜欢 Jupyter 提供的 notebook 方法:当我在很长一段时间后重新审视一个实验时,我可以很容易地看到数字与数据的对应关系。这当然是使用内联后端。

但是,当我想探索新数据时,我更喜欢使用 QT 后端。它比内联更快,可以轻松缩放、放大和缩小,并在左下角很好地显示 X 和 Y 坐标。此外,我可以使用 QT 后端来确定合适的 x 和 y 限制以用于内联后端。

我曾尝试使用%matplotlib notebook 魔法,但它实在是太慢了。对于一些实验,我正在绘制约 500 个光谱(每个光谱由约 1000 个数据点组成),这在内联后端已经很慢了。即使数据点较少,笔记本后端使用起来也太慢了。

因此,每当我绘制某些东西时,我都想同时使用 QT 后端和内联后端。 (所以,每当我执行一个绘制数据的单元格时,它都应该显示内联图像,并弹出一个 QT 后端窗口)。这样,我仍然可以很好地概览我的笔记本中的图表,同时也让我可以轻松地探索我的数据。有没有办法做到这一点?

【问题讨论】:

    标签: python matplotlib ipython jupyter jupyter-notebook


    【解决方案1】:

    据我所知,一次不能使用多个后端。 我所做的是切换后端并重新绘制。我用matplotlib.use()%matplotlib <backend> 完成了它,根据我工作的版本或环境。 我的印象是这有时不起作用,或者它可能没有响应,所以我需要重新启动环境。我想维护它并不容易,所以我什至很惊讶它几乎总是运行得如此顺利。

    可用的后端可以通过以下方式列出:

    matplotlib.rcsetup.interactive_bk
    matplotlib.rcsetup.non_interactive_bk
    matplotlib.rcsetup.all_backends
    

    希望这里还有其他有用的信息: https://matplotlib.org/stable/tutorials/introductory/usage.html

    【讨论】:

      【解决方案2】:

      这允许您运行 QtConsole,使用 plotSin 函数进行绘图,内联和通过 QtConsole。

      import matplotlib
      import numpy as np
      import matplotlib.pyplot as plt
      %matplotlib inline  
      

      ..

      def plotChirp(Type, Exp, Rand):
      
          # Orignal Chirp Funciton From:
          # http://stackoverflow.com/questions/19410042/how-to-make-ipython-notebook-matplotlib-plot-inline
          x = np.linspace(0, 3*np.pi, Rand)
          plt.plot(x, np.sin(x**int(Exp)))
          plt.title('A simple chirp ' + Type)
          plt.show()
      

      ..

      plotChirp("A", 5, 200) # Plots inline if you choose
      

      %connect_info # For your own connection
      %qtconsole
      

      QtConsole 打开,现在您可以调用您的函数在外部进行绘图了..

      使用%matplotlib qt 允许循环打印,但不幸的是它似乎与图重叠。研究子图作为一种可能的解决方案。

      %matplotlib qt
      for i in range(0,2):
      
          if i == 0:
              plotChirp("B",1, 400)
          else:
              plotChirp("c",6, 1000)
      

      【讨论】:

      • 感谢您的回答。然而,这不是我要找的 QT GUI 窗口。我想要使​​用%matplotlib qt 时弹出的同一个窗口,not QT 控制台(它没有另一个窗口的缩放、缩放和轴属性更改功能)。跨度>
      • 你可能想看看这篇文章,因为它允许在 QT Gui 中使用滚动功能滚动多个图:stackoverflow.com/questions/11563295/…
      • @tcpie 我想这就是你要找的东西stackoverflow.com/questions/41046299/…它对我有用%matplotlib tk
      猜你喜欢
      • 2017-09-18
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      • 2018-06-23
      • 2016-12-30
      • 2019-09-05
      • 2020-12-12
      • 1970-01-01
      相关资源
      最近更新 更多