我正在使用Jupyter(使用IPython)来分析研究数据以及出口数据。我非常喜欢Jupyter提供的笔记本方法:经过很长一段时间我再次访问实验时,我可以很容易地看到这些数字与数据的对应关系。这当然是使用内联后端。
但是,当我想探索新数据时,我更喜欢使用QT后端。它比内联快,并且允许轻松缩放,放大和缩小,并在左下角很好地显示X和Y坐标。此外,我可以使用QT后端来确定在内联后端使用的良好x和y限制。
我尝试使用%matplotlib notebook
魔法,但它太慢了。对于一些实验,我正在绘制~500个光谱(每个由~1000个数据点组成),这在内联后端已经很慢。即使数据点较少,笔记本后端使用起来也太慢了。
因此,每当我绘制某些内容时,我都想使用QT后端和内联后端。 (因此,每当我执行绘制数据的单元格时,它都应显示内嵌图像,并弹出QT后端窗口)。通过这种方式,我对笔记本中的图表有了很好的概述,同时也让我可以轻松地浏览我的数据。有没有办法实现这个目标?
答案 0 :(得分: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
答案 1 :(得分:0)
这允许您运行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)