2016-11-16 9 views
4

私はJupyterのノートブックページからプロットを描画したいと思います。私が覚えているように、「%をmatplotlibのQtは、」スクリプトmatplotlib backend on jupyter時間が変わるプロットの場合

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

x = np.arange(-3, 3, 0.01) 
y = np.sin(np.pi*x)/(np.pi*x) 
plt.figure() 
plt.plot(x, y) 
plt.show() 

の先頭に入力する右のコマンドでなければなりません。しかし、私はインラインプロットと次の警告

Warning: Cannot change to a different GUI toolkit: qt. Using notebook instead. 
を取得するとして、それは動作しません。

私のジュピターに何が間違っているのか理解してもらえますか?

私がブラウザの外にプロットしたい理由は、Jupyterの時間の経過とともに変化するプロットを持つ唯一の方法だと思うからです。実際には、次のコードでスパイダーでこの仕事を簡単に実行できます。

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(-3, 3, 0.01) 
fig = plt.figure() 
ax = fig.add_subplot(111) 
for j in range(1, 10): 
    y = np.sin(np.pi*x*j)/(np.pi*x*j) 
    line, = ax.plot(x, y, 'b') 
    plt.pause(0.3) 
    plt.draw() 
    line.remove() 

しかしこの段階では、このコードはJupyterで正しく機能しません。 Jupyterで時間の経過とともに変化するプロットを提供するための代替方法や興味深い方法はありますか?

答えて

0

このコードでは、少なくともあなたに物事を行うための外部ウィンドウが表示されます。 から取られるpythonspot.com。私は動きなどを追加する方法があると確信していますが、私は就寝時間の8時間後ですzzzzz

import sys 

from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QVBoxLayout, QSizePolicy, QMessageBox, QWidget, QPushButton 
from PyQt5.QtGui import QIcon 


from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg as FigureCanvas 
from matplotlib.figure import Figure 
import matplotlib.pyplot as plt 
import numpy as np 

import random 

class App(QMainWindow): 

    def __init__(self): 
     super().__init__() 
     self.left = 10 
     self.top = 10 
     self.title = 'PyQt5 matplotlib example - pythonspot.com' 
     self.width = 640 
     self.height = 400 
     self.initUI() 

    def initUI(self): 
     self.setWindowTitle(self.title) 
     self.setGeometry(self.left, self.top, self.width, self.height) 

     m = PlotCanvas(self, width=5, height=4) 
     m.move(0,0) 
     self.show() 


class PlotCanvas(FigureCanvas): 

    def __init__(self, parent=None, width=5, height=4, dpi=100): 
     fig = Figure(figsize=(width, height), dpi=dpi) 
     self.axes = fig.add_subplot(111) 

     FigureCanvas.__init__(self, fig) 
     self.setParent(parent) 

     FigureCanvas.setSizePolicy(self, 
       QSizePolicy.Expanding, 
       QSizePolicy.Expanding) 
     FigureCanvas.updateGeometry(self) 
     self.plot() 


    def plot(self): 

     x = np.arange(-3, 3, 0.01) 
     ax = self.figure.add_subplot(111) 
     ax.set_title('PyQt Matplotlib Example') 
     for j in range(1, 10): 
      y = np.sin(np.pi*x*j)/(np.pi*x*j) 
      line, = ax.plot(x, y, 'b') 
      self.draw() 

if __name__ == '__main__': 
    app = QApplication(sys.argv) 
    ex = App() 
    sys.exit(app.exec_()) 
関連する問題