簡體   English   中英

使用 mathplotlib 重疊多個圖

[英]Overlapping of multiple plots with mathplotlib

兩個圖應該看起來相似,但不同請求的內容與左側的圖重疊 我正在使用 Django 構建一個 Web 應用程序,它可以選擇繪制直方圖、散點圖、條形圖等圖

使用 matplotlib lib,我正在繪制繪圖並將繪圖渲染到 HTML 頁面。

plt.figure()
plt.title("xyz")
plt.tight_layout()
plt.plot(x,y, 'b')   
plt.plot(x,z, 'r')    
buf = BytesIO()
fig = plt.gcf()
fig.set_size_inches(12,8, forward=True)
fig.savefig(buf, format='png')
plt.clf()

# Get Image
image_base64 = base64.b64encode(
    buf.getvalue()).decode('utf-8').replace('\n', '')

img_src = 'data:image/png;base64, {}'.format(image_base64)

當用戶發送兩個不同的請求來繪制不同的圖時,圖例和數據點等內容與其他圖混合並導致圖重疊。 在附圖中,左側的圖應與右側的圖相似。 但是不同繪圖請求的內容附加到此響應並顯示在此響應中。

這是因為plt被多次重用。 像這樣的東西應該有幫助..

def simple(request):
    import random
    import django
    import datetime

    from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
    from matplotlib.figure import Figure
    from matplotlib.dates import DateFormatter

    fig=Figure()
    ax=fig.add_subplot(111)
    x=[]
    y=[]
    now=datetime.datetime.now()
    delta=datetime.timedelta(days=1)
    for i in range(10):
        x.append(now)
        now+=delta
        y.append(random.randint(0, 1000))
    ax.plot_date(x, y, '-')
    ax.xaxis.set_major_formatter(DateFormatter('%Y-%m-%d'))
    fig.autofmt_xdate()
    canvas=FigureCanvas(fig)
    response=django.http.HttpResponse(content_type='image/png')
    canvas.print_png(response)
    return response

來源

這是因為你在同一個繪制了兩個 對於 matplotlib,這意味着:“這是一張畫布,請在其上繪制兩張圖”。

如果您希望將它們拆分,請執行以下任一操作:

我有同樣的問題,但使用 Flask。 只需在 plt.save 之后插入 plt.close()。 問題已經解決了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM