Как создать гистограмму относительной частоты в Matplotlib


Гистограмма относительной частоты — это график, отображающий относительную частоту значений в наборе данных.

Вы можете использовать следующий синтаксис для создания гистограммы относительной частоты в Matplotlib в Python:

import matplotlib.pyplot as plt
import numpy as np

#define plotting area
fig = plt.figure()
ax = fig.add_subplot (111)

#create relative frequency histogram
ax.hist (data, edgecolor='black', weights=np.ones_like (data) / len (data))

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: создание гистограммы относительной частоты в Matplotlib

Следующий код показывает, как создать обычную гистограмму частоты в Matplotlib:

import numpy as np
import matplotlib.pyplot as plt

#define data values
data = [8, 8, 9, 12, 13, 13, 14, 14, 15, 18, 22, 23, 24, 25, 30]

#create frequency histogram
fig = plt.figure()
ax = fig.add_subplot (111)
ax.hist (data, edgecolor='black') 

По оси X показаны ячейки для значений данных, а по оси Y показана частота для каждой ячейки.

Вместо этого мы можем использовать следующий код для отображения относительных частот по оси Y:

import numpy as np
import matplotlib.pyplot as plt

#define data values
data = [8, 8, 9, 12, 13, 13, 14, 14, 15, 18, 22, 23, 24, 25, 30]

#create relative frequency histogram
fig = plt.figure()
ax = fig.add_subplot (111)
ax.hist (data, edgecolor='black', weights=np.ones_like (data) / len (data)) 

По оси Y теперь отображаются относительные частоты.

Например, всего в наборе данных 15 значений.

Таким образом, вместо того, чтобы показывать частоту, равную 4 , по оси Y для самого высокого столбца на графике, ось Y теперь показывает 4/15 = 0,2667 .

Мы также можем использовать функцию PercentFormatter() из Matplotlib для отображения значений по оси Y в процентах:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib. ticker import PercentFormatter

#define data values
data = [8, 8, 9, 12, 13, 13, 14, 14, 15, 18, 22, 23, 24, 25, 30]

#create relative frequency histogram with percentages on y-axis
fig = plt.figure()
ax = fig.add_subplot (111)
ax.hist (data, edgecolor='black', weights=np.ones_like (data)\* 100 / len (data))
ax.yaxis.set_major_formatter (PercentFormatter())

Обратите внимание, что ось Y теперь отображает относительные частоты в процентах.

Дополнительные ресурсы

В следующих руководствах объясняется, как создавать другие распространенные диаграммы в Matplotlib:

Как изменить цвет гистограммы Matplotlib
Как настроить размер бина в гистограммах Matplotlib
Как создать гистограмму из Pandas DataFrame