Итак, чтобы решить эту проблему, я покажу вам способ решения для 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 различными гистограммами.
Редактировать
Основываясь на комментарии, вы хотите построить k
разных гистограммы на 1 большом рисунке.
Я покажу логику для этого с 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()
Это выведет следующее:
person
David
schedule
31.10.2020