簡體   English   中英

如何使用 Matplotlib 在圖中添加多個直方圖?

[英]How to add multiple histograms in a figure using Matplotlib?

我在一個 plot 中成功使用了 matplotlib 到 plot 許多直方圖:

import matplotlib.pyplot as plt
import numpy as np

np.random.seed(1)

for i in range(0, 6):
    data = np.random.normal(size=1000)
    plt.hist(data, bins=30, alpha = 0.5)
plt.show()

在此處輸入圖像描述

但是,我希望使用 PdfPages 在 pdf 中導出此 plot。 我想在單獨的頁面中添加每個直方圖,我成功地這樣做了:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.backends.backend_pdf import PdfPages

np.random.seed(1)

fig = []
with PdfPages("exported_data.pdf") as pdf:
    for i in range(0, 6):
        data = np.random.normal(size=1000)
        fig.append(plt.hist(data, bins=30, alpha = 0.5))
        pdf.savefig(fig[i])
        plt.close()

但我想要另一個第 7 頁,其中所有圖都在一個圖中,如上所示。 如何在同一個圖中添加許多直方圖(這樣我就可以在 pdf 頁面中添加)? 我看到很多關於如何 plot 一個圖中的直方圖網格的教程,但我還沒有找到一個將 plot 中的所有直方圖添加到圖中的教程。

謝謝,斯塔姆

在將循環分別運行到 plot (您的第二個代碼片段)之后,您可以將循環運行到 plot 所有直方圖(您的第一個代碼片段)。 這是一個示例,其中隨機 arrays 在第一個循環期間保存在datasets列表中,以便能夠在第二個循環中將它們一起 plot 。 此解決方案通過使用plt.gcf()返回當前圖形來工作。

import numpy as np               # v 1.19.2
import matplotlib.pyplot as plt  # v 3.3.4
from matplotlib.backends.backend_pdf import PdfPages

np.random.seed(1)

datasets = []
with PdfPages("exported_data.pdf") as pdf:
    # Plot each histogram, adding each figure to the pdf
    for i in range(6):
        datasets.append(np.random.normal(size=1000))
        plt.hist(datasets[i], bins=30, alpha = 0.5)
        pdf.savefig(plt.gcf())
        plt.close()
    # Plot histograms together using a loop then add the completed figure to the pdf
    for data in datasets:
        plt.hist(data, bins=30, alpha = 0.5)
    pdf.savefig(plt.gcf())
    plt.close()

暫無
暫無

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

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