2017-01-06 22 views
1

単純なプロット(StringIOで保存)をWebブラウザに戻そうとしています。読書の時間の後、ついに近づく。多分。cStringIOを使用してCGIでmatplotlibプロットを表示

import cgi 
import cStringIO 
import matplotlib.pyplot as plt 
import numpy as np 


def doit(): 

    x = np.linspace(-2,2,100) 
    y = np.sin(x) 

    format = "png" 
    ggg = cStringIO.StringIO() 

    plt.plot(x, y) 
    plt.savefig(ggg, format=format) 

    data_uri = ggg.read().encode('base64').replace('\n', '') 
    img_tag = '<img src="data:image/png;base64,{0}" alt="thisistheplot"/>'.format(data_uri) 

    print("Content-type: text/html\n") 
    print("<title>Try Ageen</title>") 
    print("<h1>Hi</h1>") 
    print(img_tag) 

doit() 

壊れた画像アイコンが戻ってきます。私は既にこれを読んで見た:Dynamically serving a matplotlib image to the web using python、中でも...

答えて

0

実際には、それを考え出した。

#!/usr/bin/env python 
import cgi 
import cStringIO 
import matplotlib.pyplot as plt 
import numpy as np 


def doit(): 

    x = np.linspace(-2,2,100) 
    y = np.sin(x) 
    format = "png" 
    sio = cStringIO.StringIO() 
    plt.plot(x, y) 
    plt.savefig(sio, format=format) 

    data_uri = sio.getvalue().encode('base64').replace('\n', '') 
    img_tag = '<img src="data:image/png;base64,{0}" alt="sucka" />'.format(data_uri) 

    print("Content-type: text/html\n") 
    print("<title>Try Ageen</title>") 
    print("<h1>Hi</h1>") 
    print(img_tag) 

doit() 

目標は三角関数にクライアント入力を持っており、それ以降のページに戻ってきたことです。私は、このアプローチがとられて見て、それが役立つことを願っていないとして、掲載ままにします。このコードの実行/見栄えを助けるコメントは歓迎されます。

関連する問題