2017-10-09 2 views
1

フラスコテンプレートに2つのmatplotlibグラフを表示する必要があります。私は望みの出力を得ていますが、matplotlibを初めて使っているので、リフレッシュ後に最初の棒グラフが2番目のプロットに変わる理由を理解できません。ここには、仕事をしている3つの機能があります。フラスコテンプレートのリフレッシュ後matplotlibグラフエラー

import matplotlib.pyplot as plt 
import base64 
import StringIO 

@app.route('/FirmIn/admin/') 
def admin(): 
    plot_url=rendergraph1() 
    plot_url2=rendergraph2() 
    return render_template('admin.html', plot_url=plot_url, plot_url2=plot_url2) 

def rendergraph1(): 
    cursor.execute("SELECT category,count(*) from project_info group by category") 
    dataall=cursor.fetchall() 
    img = StringIO.StringIO() 
    category,index,count =[],[],[] 
    i=0 
    for data in dataall: 
     category.append(data[0]) 
     index.append(i) 
     count.append(data[1]) 
     i=i+1 
    print index, count 
    plt.bar(index, count, color = 'r') 
    plt.xticks(index, category, rotation=25) 
    plt.yticks(range(min(count), max(count)+1)) 
    plt.rcParams['xtick.major.pad']='5' 
    plt.savefig(img, format='png') 
    img.seek(0) 
    plot_url = base64.b64encode(img.getvalue()).decode() 
    return plot_url 

def rendergraph2(): 
    cursor.execute("SELECT category,sum(project_cost) from project_info group by category") 
    img = StringIO.StringIO() 
    dataall=cursor.fetchall() 
    category,index,cost =[],[],[] 
    i=0 
    for data in dataall: 
     category.append(data[0]) 
     index.append(i) 
     cost.append(data[1]) 
     i=i+1 
    plt.plot(index,cost) 
    plt.xticks(index, category, rotation=25) 
    plt.savefig(img, format='png') 
    img.seek(0) 
    plot_url2 = base64.b64encode(img.getvalue()).decode() 
    return plot_url2 

、テンプレート内で私が使用して表示しています:

<img style="height:400px" src="data:image/png;base64, {{ plot_url }}"> 
<img style="height:400px" src="data:image/png;base64, {{ plot_url2 }}"> 

答えて

2

それだけで利用できるキャンバスや窓に更新されるので、この理由はあります。 2つの画像を別々に表示するには、両方のプロットを保持するために2つの別々のウィンドウを作成する必要があります。これを行うには

は両方rendergraph1()rendergraph()方法で

plt.figure() 

..before

plt.plot() 

行が含まれます。

これは問題を処理する必要があります。 :)

関連する問題