如何使用flask和matplotlib生成图来解决尺寸问题?

时间:2019-05-27 11:54:21

标签: python matplotlib

enter image description here我正在设置一个Web应用程序,我希望能够使用matplotlib和flask进行绘图。对于其中一张图,我必须使用“ plt.tight_layout()”才能读取标签。我现在的问题是,我将调整图的大小,使其在y轴上的尺寸都相同。

我正在macOS Mojave(版本10.14.4)上使用Python 2.7.16 anaconda环境。

我尝试使用以下功能: plt.rcParams [“ figure.figsize”] =(5,1) plt.figure(figsize =(5,1))

唯一起作用的功能是: plt.gcf()。set_size_inches(9.0,1.78) 但我无法手动设置

from flask import Flask, request, redirect, g, render_template
import requests
import base64
from cStringIO import StringIO
import matplotlib.pyplot as plt
from matplotlib.figure import Figure

app = Flask(__name__)

@app.route("/callback/")
def song_analysis():

    # Making a plot
    img = StringIO()
    plt.scatter(names,valence, color=[ 'deeppink','lightpink','lime','orange','blue','green','red','cyan','magenta','yellow','black','white','wheat', 'black', 'indigo', 'snow', 'orchid', 'steelblue', 'grey','aqua'])
    plt.xticks([])
    plt.tight_layout() 
    plt.savefig(img,format='png')
    plt.close()
    img.seek(0)
    plot_url = base64.b64encode(img.getvalue())

    img2= StringIO()
    plt.scatter(names,speechiness, color=[ 'deeppink','lightpink','lime','orange','blue','green','red','cyan','magenta','yellow','black','white','wheat', 'black', 'indigo', 'snow', 'orchid', 'steelblue', 'grey','aqua'])
    plt.xticks(rotation=90)
    plt.tight_layout()
    plt.savefig(img2,format='png')
    plt.close()
    img2.seek(0)
    plot_url2 = base64.b64encode(img2.getvalue())

    return render_template("index.html", info_name = [display_name],  plot_url=plot_url, plot_url2=plot_url2)


if __name__ == "__main__":
    app.run(debug=True,port=PORT)

在html文件中包括以下行:

<img src="data:image/png;base64, {{ plot_url }}" width="800">
<img src="data:image/png;base64, {{ plot_url2 }}" width="800">

0 个答案:

没有答案