簡體   English   中英

在一個圖中並排繪制多個圖形

[英]Plotting multiple graphs side-by-side in one figure

我使用以下通用代碼片段制作了多個直方圖(對每個直方圖進行了輕微修改):

import matplotlib.pyplot as plt

plt.hist(df['count'], color = 'blue', edgecolor = 'black', bins = int(12/1))
plt.title('Histogram')
plt.xlabel('No. of individuals')
plt.ylabel('No. of images')

就目前而言,我必須將此代碼作為 8 個不同的命令運行,以生成 8 個單獨的直方圖。 因此,如何將所有 8 個圖形繪制為一個圖形,並將各個圖形並排設置?

這可能嗎?

謝謝,R

因此,為了解決這個問題,我將向您展示在同一圖上求解 3 個不同直方圖的方法,相同的邏輯可以應用於任意k個直方圖。

import numpy as np
import matplotlib.pyplot as plt

n = 5000
mean_mu1 = 60
sd_sigma1 = 15
data1 = np.random.normal(mean_mu1, sd_sigma1, n)
mean_mu2 = 80
sd_sigma2 = 15
data2 = np.random.normal(mean_mu2, sd_sigma2, n)
mean_mu3 = 100
sd_sigma3 = 15
data3 = np.random.normal(mean_mu3, sd_sigma3, n)

plt.figure(figsize=(8,6))
plt.hist(data1, bins=100, alpha=0.5, label="data1")
plt.hist(data2, bins=100, alpha=0.5, label="data2")
plt.hist(data3, bins=100, alpha=0.5, label="data3")
plt.xlabel("Data", size=14)
plt.ylabel("Count", size=14)
plt.title("Multiple Histograms with Matplotlib")
plt.legend(loc='upper right')
plt.savefig("overlapping_histograms_with_matplotlib_Python_2.png")

這將生成以下內容:

在此處輸入圖片說明

來源: https : //datavizpyr.com/overlapping-histograms-with-matplotlib-in-python/

筆記

當您處理 8 個不同的直方圖時,這種圖將很難閱讀。

編輯

根據評論,您希望在 1 個大圖中繪制k不同的直方圖。

我將用 4 個不同的直方圖展示這樣做的邏輯:

import numpy as np
import matplotlib.pyplot as plt

n = 5000
mean_mu1 = 60
sd_sigma1 = 15
data1 = np.random.normal(mean_mu1, sd_sigma1, n)
mean_mu2 = 80
sd_sigma2 = 15
data2 = np.random.normal(mean_mu2, sd_sigma2, n)
mean_mu3 = 100
sd_sigma3 = 15
data3 = np.random.normal(mean_mu3, sd_sigma3, n)
mean_mu4 = 120
sd_sigma4 = 15
data4 = np.random.normal(mean_mu4, sd_sigma4, n)
data = [data1, data2, data3, data4]
f, a = plt.subplots(2,2)
a = a.ravel()
for idx, ax in enumerate(a):
    ax.hist(data[idx])

plt.show()

這將輸出以下內容:

在此處輸入圖片說明

暫無
暫無

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

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