繁体   English   中英

在Jupyter Notebook中同时使用Matplotlib内联和QT

[英]Use both matplotlib inline and qt in jupyter notebook

我正在使用Jupyter(与IPython一起使用)来分析研究数据以及导出数据。 我真的很喜欢Jupyter提供的笔记本方法:长时间浏览实验后,我可以轻松地看到数字与数据的对应关系。 当然,这是使用内联后端。

但是,当我想探索新数据时,我更喜欢使用QT后端。 它比嵌入式方法快,并且可以轻松缩放,放大和缩小,并在左下角很好地显示X和Y坐标。 此外,我可以使用QT后端来确定要在串联后端中使用的良好x和y限制。

我已经尝试过使用%matplotlib notebook魔术,但是它太慢了。 对于某些实验,我正在绘制〜500个光谱(每个光谱由〜1000个数据点组成),这在嵌入式后端中已经很慢了。 即使数据点较少,笔记本后端也使用起来太慢。

因此,每当我绘图时,我都想同时使用QT后端和内联后端。 (因此,每当我执行绘制数据的单元格时,它都应显示嵌入式图像并弹出QT后端窗口)。 这样,我仍然可以很好地了解笔记本中的绘图,同时还可以轻松浏览数据。 有没有办法做到这一点?

这使您可以内联并通过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)

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM