Построение нескольких графиков рядом на одном рисунке

Я сделал несколько гистограмм, используя следующий обобщенный фрагмент кода (с небольшими изменениями для каждого):

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 графиков как одну фигуру, с отдельными графиками, расположенными рядом?

Это возможно?

Спасибо, Р


person CephaloRhod    schedule 31.10.2020    source источник
comment
Вы хотите, чтобы все гистограммы были на одном графике? Или вам нужен 1 большой график, состоящий из 8 разных гистограмм?   -  person David    schedule 31.10.2020
comment
Первый вариант. Я хочу, чтобы все 8 гистограмм были построены отдельно, но рядом на одной фигуре @DavidS   -  person CephaloRhod    schedule 31.10.2020


Ответы (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")

Это создаст следующее:

введите здесь описание изображения

Источник: 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
comment
Извините, я извиняюсь, Дэвид! Английский не является моим основным языком. Наверное, я имел в виду второй способ, с одним большим графиком из 8 разных гистограмм. Извините, что бездельничаю - person CephaloRhod; 31.10.2020
comment
Фантастика, это именно то, что я хотел. Спасибо большое, очень полезно и подробно! р - person CephaloRhod; 31.10.2020