LoginSignup
3
2

More than 5 years have passed since last update.

PyQtGraphが、インタプリターで使用できない事がある。

Last updated at Posted at 2016-10-11

これが実行できない場合がある

とりあえず、これをやって、

端末から、下記したコードが実行できない事があります。
OSの違いによる現象ではないかと思ってます。

コレとか、

Python_console
import pyqtgraph as pg
pg.plot([0,1,2],[3,4,5])

コレ。

Python_console
import pyqtgraph as pg
import numpy as np
pg.image(np.random.rand(10,10))

ついでにコレも。

Python_console
import pyqtgraph as pg
pg.dbg()

こうなってほしい

20161104-02.png
20161104-01.png
20161104-03.png
これを使うと、3DCGのblenderとかみたいに、ユーザーがpython consoleから操作する、上級者向けのアプリが作れそうだ。
そういや、3Dで、こういうのがあるから、pythonを勉強し始めたんだっけか。
・・・普通に動く。

しかし、こうなる場合も(Windowsの場合)

私の環境だけかも知れませんが・・・

ウィンドウは現れるけど、フリーズしたような状態になってしまう。
この知恵袋に、載っていたのと、同じ状態だと思いっています。

20161011-1.png
(これ以外にも、グラフの軸は表示されるけどフリーズする、という場合もあった。)

ちなみに、PySideと連携させた場合は、これが起こる環境のWindows PCでもちゃんと表示されます。(とりあえずこれをim.pyとして保存し、実行する。)

 Windowsでは、できないというわけじゃない。

ここにあったのを、もう少し簡単にしてみました。

import sys
import pyqtgraph as pg
plt = pg.plot([0,1,2],[3,4,5])
if __name__ == '__main__':
    if sys.flags.interactive != 1 or not hasattr(pg.QtCore, 'PYQT_VERSION'):
        pg.QtGui.QApplication.exec_()

またできなかった・・・と思いきや、
20161011-2.png
出来てます。

???こんな場合もありか。(matplotlibを使えば・・・)

原因は不明ですが、いったんmatplotlibで、プロットした後なら、pyqtgraphが使えるようになる様です。
偶然気付いた。

import matplotlib.pyplot as plt
plt.plot([0,1,2],[0,1,2])
plt.show()

とでもしておき、matplotlibのwindowを消してから、

import pyqtgraph as pg
pg.plot([0,1,2],[3,4,5])

とすると、無事にできてしまいます。
pyqtgraphのimportは、matplotlibの前でも大丈夫なようです。

matplotlibが、何の役割をしているのか分かりません。

こうなる(Ubuntuの場合)

20161010screenshot27.png
できる!一発!!

ちなみに、これは、インタラクティブな操作が可能なグラフです。

  • 左クリックのドラッグで左右に移動。
  • 右クリックのドラッグでズーム。
  • 右クリック一回押しから出るメニューから、軸のlog表示、画像の保存や、プロットデータの保存などにも対応しています。

ちなみに、matplotlibと比較しますが、

Python_console_session
import matplotlib.pyplot as plt
plt.plot([0,1,2],[3,4,5])
plt.show()

3行かかります。
20161010screenshot28.png
こちらも、インタラクティブに操作できます。
詳細は省きますが、
下側のボタンを押す→ドラッグすると画面が動くという様な感じです。

私は、UbuntuのPyQtGraphの操作の方が、手っ取り早く動いてくれて、好きです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2