2017-04-17 14 views
-3

実用上の理由から、私はrepl.it(Pythonをインストールする必要はありません)にPytonコードの小さな部分をテストしたいと思います。repl.itでPythonを使ってプロットできないのはなぜですか

コード

import numpy as np 
import matplotlib.pyplot as plt 

time = np.array([0, 1, 2, 3]) 
vec = np.array([1, 4, 3, -2]) 

plt.plot(time, vec) 

は、次のエラーを与える:これは

[GCC 4.8.2] on linux 

Traceback (most recent call last): 
    File "main.py", line 16, in <module> 
    plt.figure() 
    File "/goval_modules/python35/matplotlib/pyplot.py", line 535, in figure 
    **kwargs) 
    File "/goval_modules/python35/matplotlib/backends/backend_tkagg.py", line 84, in new_figure_manager 
    return new_figure_manager_given_figure(num, figure) 
    File "/goval_modules/python35/matplotlib/backends/backend_tkagg.py", line 92, in new_figure_manager_given_figure 
    window = Tk.Tk() 
    File "/usr/local/lib/python3.5/tkinter/__init__.py", line 1868, in __init__ 
    self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) 
_tkinter.TclError: no display name and no $DISPLAY environment variable 
exited with non-zero status 

何を意味するのでしょうか?

+4

オンラインWebサイトにはプロットを表示するGUIサーバーがないためです。 –

+0

@MartijnPieters OK、プロットを表示またはダウンロードする方法はありますか? – Karlo

+1

コードを[try.jupyter.org](https://try.jupyter.org)で実行して、インライン(つまりpng)出力を得ることができます。 – ImportanceOfBeingErnest

答えて

7

matplotlibデフォルトでは対話型バックエンドを選択し、GUIにプロットを表示します。デフォルトではTkInterを使用します。 matplotlib FAQのWhat is a backendを参照してください。これは、PythonがWebサーバー上で実行されているときには機能しませんが、これを表示するGUIサーバーはありません。

非対話型バックエンドを選択する必要があります。 Aggがサポートされ、PNGが生成されます。これを実行すると

import matplotlib as mpl 
mpl.use('Agg') 
import numpy as np 
import matplotlib.pyplot as plt 

time = np.array([0, 1, 2, 3]) 
vec = np.array([1, 4, 3, -2]) 

plt.plot(time, vec) 
plt.savefig('graph.png') 

は、余分なgraph.pngタブは、それはあなたが結果をダウンロードすることができます表示されます。Repl.itは、あなたが「ローカル」(*)をファイルを保存することができます。 live demoを参照してください。上記の生成:新しいスクリプトの場合

matplotlib graph


(*)を、新しいファイルアイコンをクリックして最初のプロジェクトモードを有効にします。これは、プラス記号付きの文書のように見え、エディタの行番号の上にある「設定」アイコンの下にあります。

関連する問題