

matplotlib ＋ jupyter以外の方法でグラフを画面に表示することが可能な方法はありますか？

元のやり方の場合でも同様に質問ですが、pyinstaller等でexe化しようとする.pyファイル内での記述で完結可能ですか？


CC BY-SA 4.0
2022-10-04T06:08:08.513
91442
2022-11-05T12:38:55.017
51823
question
python jupyter-notebook
python【 matplotlib ＋ jupyter 】以外の方法でグラフ表示を行う方法はありますか？


### Matplotlib の場合

[Backends](https://matplotlib.org/stable/users/explain/backends.html) に UI
のバックエンドに関して述べられています。PyQt/PySide、PyGObject、Tkinter、wxPython、macOS/Cocoa
などが有るようです。

そもそも、 Jupyter
を用いる方法がオプションというか、発展的な利用方法だと思います。[チュートリアル](https://matplotlib.org/stable/tutorials/index.html)や
[Quick start
guide](https://matplotlib.org/stable/tutorials/introductory/quick_start.html)
に従うと、デフォルトのバックエンドとして Qt や Tk などが使われると思います。

自作の UI に組込む場合は、[Embedding Matplotlib in graphical user
interfaces](https://matplotlib.org/stable/gallery/user_interfaces/index.html)
で解説されています。

PyInstaller での exe 化のやり易さは、UI ライブラリにより様々と思いますが、メジャーなツールキットであれば、それぞれ解説が見つかります。


CC BY-SA 4.0
2022-10-04T10:12:59.743
91444
2022-10-04T10:12:59.743
3054
91442
answer


### GUI 環境を利用する方法

[GUI Programming in Python](https://wiki.python.org/moin/GuiProgramming)
にクロスプラットホーム・フレームワークやプラットフォーム固有のフレームワークが載ってます

グラフの描画なら, UI としてではなく描画のみで, 結局 Matplotlib で行うことになるでしょう  
(ユーザースクリプトで線を引くなどは可能だが, グラフになるとそれなり大変になるので)  
その場合の GUI環境としては Qt, Tkinter などが候補に上がるはず

その辺りは別解で記されているとおりで,  
付け加えるなら表示の際 **別ウィンドウ** が立ち上がる … くらい

### Webブラウザーを利用する方法

(実行環境に Webブラウザーが用意されてるなら …)

canvas や SVG などの機能で描画を行う はずで制御は JavaScript 経由,  
matplotlib以外に次のようなグラフ・ライブラリーがあります

  * [Bokeh](https://docs.bokeh.org/en/latest/)
  * [Plotly](https://plotly.com/python/)

Python側は [Flask](https://flask.palletsprojects.com/en/latest/) など。  
必要に応じて [webbrowser ---
便利なウェブブラウザコントローラー](https://docs.python.org/ja/3/library/webbrowser.html)
など使用するとよいかも

(Flask and (Bokeh or Plotly) など検索すると記事が見つかる)

### Matplotlib で UIなしの方法

Matplotlibのバックエンドには 2 つの種類, UI バックエンド, (画像ファイルを作成するための)ハードコピー・バックエンドがあります

> There are two types of backends: user interface backends (for use in
> PyQt/PySide, PyGObject, Tkinter, wxPython, or macOS/Cocoa); also referred to
> as "interactive backends") and hardcopy backends to make image files (PNG,
> SVG, PDF, PS; also referred to as "non-interactive backends").

後者の中で, `Agg` レンダラー ([Agg which uses the Anti-Grain
Geometry](https://agg.sourceforge.net/antigrain.com/) ライブラリー) を使用すると, 手軽に(
**小さいフットプリントで** ) ファイル作成が可能

[![imgcat
で画像表示](https://i.stack.imgur.com/gU4jv.png)](https://i.stack.imgur.com/gU4jv.png)

* * *

また, sixelに対応しているターミナルエミュレーターがあるなら以下を利用し直接描画も可能です

  * matplotlib-sixel (backend) (複数見つかったのでオリジナル不明なためリンクは省く)
  * [sixelplot](https://github.com/kktk-KO/sixelplot)
  * [sixel-gnuplot](https://github.com/csdvrx/sixel-gnuplot)


CC BY-SA 4.0
2022-11-05T12:38:55.017
92015
2022-11-05T12:38:55.017
43025
91442
answer