在一张图中并排绘制多个图形

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()

这将输出以下内容: