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

时间:2020-10-31 10:54:14

标签: python python-3.x matplotlib plot histogram

我使用以下通用代码段制作了多个直方图(对每个代码段进行了适当的修改):

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

1 个答案:

答案 0 :(得分:1)

因此,为了解决该问题,我将向您展示解决同一图上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")

这将生成以下内容:

enter image description here

来源: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()

这将输出以下内容:

enter image description here