Вступление
Matplotlib - одна из наиболее широко используемых библиотек визуализации данных в Python. От простых до сложных визуализаций - это библиотека для большинства.
В этом уроке мы рассмотрим, как построить гистограмму в Matplotlib .
Гистограммы отображают числовые величины на одной оси и категориальные переменные - на другой, что позволяет увидеть, сколько вхождений существует для разных категорий.
Гистограммы можно использовать для визуализации временных рядов, а также только категориальных данных.
Построить барный участок в Матплотлибе
Построить гистограмму в Matplotlib так же просто, как вызвать bar()
в
экземпляре PyPlot и передать категориальные и числовые переменные,
которые мы хотели бы визуализировать.
import matplotlib.pyplot as plt
x = ['A', 'B', 'C']
y = [1, 5, 3]
plt.bar(x, y)
plt.show()
Здесь у нас есть несколько категориальных переменных в списке - A
,
B
и C
У нас также есть пара непрерывных переменных в другом списке -
1
, 5
и 3
. Затем связь между ними визуализируется на гистограмме
путем передачи этих двух списков в plt.bar()
.
В результате получается четкая и простая гистограмма:
{.ezlazyload}
Постройте график горизонтальной полосы в Matplotlib
Часто нам может потребоваться построить гистограмму горизонтально, а не
вертикально. Этого легко добиться, переключив plt.bar()
вызов
plt.barh()
:
import matplotlib.pyplot as plt
x = ['A', 'B', 'C']
y = [1, 5, 3]
plt.barh(x, y)
plt.show()
В результате получается горизонтально ориентированная гистограмма:
{.ezlazyload}
Изменить цвет диаграммы в Matplotlib
Изменить цвет самих полос так же просто, как установить color
со
списком цветов. Если у вас в списке больше полос, чем цветов, они снова
начнут применяться с первого цвета:
import matplotlib.pyplot as plt
x = ['A', 'B', 'C']
y = [1, 5, 3]
plt.bar(x, y, color=['red', 'blue', 'green'])
plt.show()
Теперь у нас есть красиво окрашенная гистограмма:
{.ezlazyload}
Конечно, вы также можете использовать сокращенные версии или даже коды HTML:
plt.bar(x, y, color=['red', 'blue', 'green'])
plt.bar(x, y, color=['r', 'b', 'g'])
plt.bar(x, y, color=['#ff0000', '#00ff00', '#0000ff'])
plt.show()
Или вы даже можете поместить одно скалярное значение, чтобы применить его ко всем барам:
plt.bar(x, y, color='green')
{.ezlazyload}
Гистограмма с полосами ошибок в Matplotlib
Когда вы наносите на график средние значения списков, что является обычным приложением для гистограмм, у вас будет некоторое пространство для ошибок. Очень полезно построить планки погрешностей, чтобы позволить другим наблюдателям и вам самим знать, насколько правдивы эти средства и какое отклонение ожидается.
Для этого давайте создадим набор данных с некоторыми значениями, вычислим их средние и стандартные отклонения с помощью Numpy и построим их с планками ошибок:
import matplotlib.pyplot as plt
import numpy as np
x = np.array([4, 5, 6, 3, 6, 5, 7, 3, 4, 5])
y = np.array([3, 4, 1, 3, 2, 3, 3, 1, 2, 3])
z = np.array([6, 9, 8, 7, 9, 8, 9, 6, 8, 7])
x_mean = np.mean(x)
y_mean = np.mean(y)
z_mean = np.mean(z)
x_deviation = np.std(x)
y_deviation = np.std(y)
z_deviation = np.std(z)
bars = [x_mean, y_mean, z_mean]
bar_categories = ['X', 'Y', 'Z']
error_bars = [x_deviation, y_deviation, z_deviation]
plt.bar(bar_categories, bars, yerr=error_bars)
plt.show()
Здесь мы создали три поддельных набора данных с несколькими значениями в каждом. Мы визуализируем средние значения каждого из этих списков. Однако, поскольку средние, а также средние значения могут давать ложное ощущение точности, мы также вычислим стандартное отклонение этих наборов данных, чтобы мы могли добавить их как планки ошибок.
Используя функции Numpy mean()
и std()
, это очень просто. Тогда мы
упаковали бар значение в bars
список, барные названия приятного
пользовательского опыта в bar_categories
и , наконец , - стандартные
отклонения значений в error_bars
список.
Чтобы визуализировать это, мы вызываем обычную bar()
, передавая
bar_categories
(категориальные значения) и bars
(непрерывные
значения) вместе с аргументом yerr
yerr
вертикально, мы используем ваш аргумент. xerr
горизонтально, мы
бы использовали аргумент xerr. Здесь мы предоставили информацию о
планках погрешностей.
В конечном итоге это приводит к:
{.ezlazyload}
Построение гистограммы с накоплением в Matplotlib
Наконец, давайте построим гистограмму с накоплением. Гистограммы с накоплением действительно полезны, если у вас есть группы переменных, но вместо того, чтобы строить их друг рядом с другом, вы хотите построить их друг над другом.
Для этого у нас снова будут группы данных. Затем мы рассчитаем их стандартное отклонение для планок погрешностей.
Наконец, нам понадобится диапазон индексов, чтобы построить эти переменные друг над другом, сохраняя при этом их относительный порядок. Этот индекс, по сути, будет представлять собой диапазон чисел, равный длине всех групп, которые у нас есть.
Чтобы наложить один столбик на другой, используйте bottom
аргумент. Вы
указываете, что находится bottom
этой панели. Чтобы построить x
под
y
, вы должны установить x
как bottom
y
.
Для более чем одной группы вы захотите сложить значения перед
построением графика, иначе гистограмма не будет складываться. Мы будем
использовать np.add np.add().tolist()
чтобы добавить элементы двух
списков и создать список обратно:
import matplotlib.pyplot as plt
import numpy as np
# Groups of data, first values are plotted on top of each other
# Second values are plotted on top of each other, etc
x = [1, 3, 2]
y = [2, 3, 3]
z = [7, 6, 8]
# Standard deviation rates for error bars
x_deviation = np.std(x)
y_deviation = np.std(y)
z_deviation = np.std(z)
bars = [x, y, z]
ind = np.arange(len(bars))
bar_categories = ['X', 'Y', 'Z'];
bar_width = 0.5
bar_padding = np.add(x, y).tolist()
plt.bar(ind, x, yerr=x_deviation, width=bar_width)
plt.bar(ind, y, yerr=y_deviation, bottom=x, width=bar_width)
plt.bar(ind, z, yerr=z_deviation, bottom=bar_padding, width=bar_width)
plt.xticks(ind, bar_categories)
plt.xlabel("Stacked Bar Plot")
plt.show()
Выполнение этого кода приводит к:
{.ezlazyload}
Заключение
В этом руководстве мы рассмотрели несколько способов построения гистограммы с использованием Matplotlib и Python. Мы также рассмотрели, как вычислять и добавлять полосы ошибок, а также полосы стека друг на друга.
Если вас интересует визуализация данных и вы не знаете, с чего начать, обязательно ознакомьтесь с нашим комплектом книг по визуализации данных в Python{.ebook-link} :
::: {style=“border: 1px solid #ebebeb;padding: 15px;”} {.ebook-link}
Визуализация данных в Python
::: {.row} ::: {.col-md-4 .col-xs-12} {.ezlazyload .img-responsive .center-block} :::
::: {.col-md-8 .col-xs-12 .my-auto} Станьте опасными с визуализацией данных
✅ 30-дневная гарантия возврата денег без вопросов
✅ от начального до продвинутого
✅ Регулярно обновляется бесплатно (последнее обновление в апреле 2021 г.)
✅ Обновлено с бонусными ресурсами и руководствами ::: ::: :::
Визуализация данных в Python с помощью Matplotlib и Pandas - это книга, предназначенная для абсолютных новичков в работе с Pandas и Matplotlib с базовыми знаниями Python и позволяющая им создать прочную основу для расширенной работы с этими библиотеками - от простых графиков до анимированных трехмерных графиков с интерактивными кнопки.
Он служит подробным руководством, которое научит вас всему, что вам нужно знать о Pandas и Matplotlib, в том числе о том, как создавать типы графиков, которые не встроены в саму библиотеку.
Книга «Визуализация данных в Python» , книга для начинающих и средних разработчиков Python, проведет вас через простые манипуляции с данными с помощью Pandas, охватит основные библиотеки построения графиков, такие как Matplotlib и Seaborn, и покажет, как использовать преимущества декларативных и экспериментальных библиотек, таких как Altair. В частности, на протяжении 11 глав эта книга охватывает 9 библиотек Python: Pandas, Matplotlib, Seaborn, Bokeh, Altair, Plotly, GGPlot, GeoPandas и VisPy.
Он служит уникальным практическим руководством по визуализации данных в виде множества инструментов, которые вы можете использовать в своей карьере.