Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Артефакт визуализации Plotly играет с histogram_12
Всем привет, меня зовут Питер~
В статистической графике есть график, называемый гистограммой, который включает в себя одномерную гистограмму и двумерную гистограмму (также называемую гистограммой плотности); в этой статье впервые представлено создание одномерной гистограммы, которая в основном основана на двух методах:
- На основе plotly_express
- На основе plotly.graph_objects
Сюжетный сериал
Статьи Plotly образуют последовательную серию. Первые 11 статей о визуализации Plotly:
- Прохладный! 36 картинок влюбляются в продвинутый артефакт визуализации Plotly_Express
- Играйте с точечными диаграммами с помощью Plotly
- Сюжетные игры с круговыми диаграммами
- Сюжетное развлечение с воронкообразными диаграммами
- Сюжетные игры с гистограммами
- Сюжетные игры с пузырьковыми диаграммами
- Сюжетные игры с биржевыми диаграммами
- Играйте с диаграммами Ганта с Plotly
- Сюжетные пьесы с коробочными сюжетами
- Сюжетные игры с областными диаграммами
- Сюжетные пьесы со скрипичными сюжетами
Эффект гистограммы
Цитируя определение гистограммы из энциклопедии Baidu:
Гистограмма, также известная как карта массового распределения, представляет собой график статистического отчета, который представляет распределение данных в виде серии вертикальных полос или отрезков линий различной высоты. Как правило, горизонтальная ось представляет тип данных, а вертикальная ось — распределение.
Двумя координатами гистограммы являются статистическая выборка и мера определенного атрибута, соответствующего выборке, которая выражается в виде столбца.
Данные моделирования
Рисование графиков в этой статье в основном основано на советах набора данных о потреблении, который поставляется с Plotly, Основные поля включают в себя:
- Общая сумма потребления: total_bill
- совет: совет
- Пол плательщика: пол
- Курит ли плательщик: курильщик
- дата: день
- Время приема пищи: время, обед или ужин
- Количество человек, обедающих: размер
import plotly.express as px
import numpy as np
import plotly.graph_objects as go
tips = px.data.tips()
tips.head()
На основе реализации plotly_express
базовая гистограмма
fig = px.histogram(tips, x="total_bill")
fig.show()
Установите элементы раздела гистограммы
fig = px.histogram(
tips,
x="tip",
title='设置直方图元素', # 标题
labels={'tip':'小费'}, # x轴label设置
opacity=0.8, # 图形透明度
log_y=True, # 取值的对数
color_discrete_sequence=['firebrick'] # 颜色选择
)
fig.show()
Используйте категориальное значение поля в качестве оси X
В приведенном выше примере мы видим, что все данные на оси X являются числовыми.На самом деле, мы также можем использовать различные категории в качестве метки метки оси X:
fig = px.histogram( # 直方图中自动统计出现的个数
tips,
x="day")
fig.show()
Пользовательские ячейки для номеров блоков
fig = px.histogram(
tips,
x="total_bill",
nbins=20) # 对应字段的个数自定义块的个数
fig.show()
Выбор метода графической нормализации
Для каждой гистограммы существует несколько различных методов нормализации:
'percent', 'probability', 'density', 'probability density'
fig = px.histogram(
tips,
x="total_bill",
histnorm='percent' # 选择标准化方式
)
fig.show()
сгруппированная гистограмма
Гистограммы группируются и рисуются по разным значениям поля, поле дня имеет 4 разных значения:
fig = px.histogram(
tips,
x="total_bill",
color="day") # day属性有4种取值
fig.show()
fig = px.histogram(
tips,
x="tip",
color="sex") # sex属性有2种取值
fig.show()
Использование различных агрегатных функций
Функция агрегирования по умолчанию, используемая в гистограмме, — это счетчик, можно использовать и другие функции агрегирования.
fig = px.histogram(
tips,
x="tip", # 进行分块
y="total_bill",
histfunc='avg') # 均值
fig.show()
Визуализируйте распределение гистограммы
После рисования основной гистограммы мы также можем нарисовать соответствующую графику на полях всего холста, чтобы помочь отобразить закон распределения графики.Используемый параметр является маргинальным (предельным), а другая графика используется для отображения закона распределения. данные:
fig = px.histogram(
tips,
x="tip",
color="sex", # 颜色分组
marginal="rug", # 可供选择:`rug`、`box`, `violin`
hover_data=tips.columns
)
fig.show()
Реализация на основе go.Histogram
базовая графика
x = tips["total_bill"].tolist()
# 等价于 px.histogram(tips, x="total_bill")
# 直接传入x的值
fig = go.Figure(data=[go.Histogram(x=x)])
fig.show()
Графическая стандартизация
График нормализуется так же, как и при использовании plotly_express:
import plotly.graph_objects as go
import numpy as np
x = np.random.randn(1000)
fig = go.Figure(data=[go.Histogram(
x=x,
histnorm='probability density' # 标准化方式选择 'percent', 'probability', 'density', 'probability density'
)])
fig.show()
Горизонтальная гистограмма
Используйте входящие данные как значение оси Y, чтобы нарисовать горизонтальную гистограмму:
import plotly.graph_objects as go
import numpy as np
y = np.random.randn(1000) # 生成1000个正态分布的随机数
fig = go.Figure(data=[go.Histogram(
y=y, # 变成y的取值
histnorm='probability density' # 标准化方式选择 'percent', 'probability', 'density', 'probability density'
)])
fig.show()
Наложение режима наложения для нескольких гистограмм
import plotly.graph_objects as go
import numpy as np
x0 = np.random.randn(300)
x1 = np.random.randn(300) + 1.5
x2 = np.random.randn(300) - 1.5
fig = go.Figure()
fig.add_trace(go.Histogram(x=x0))
fig.add_trace(go.Histogram(x=x1))
fig.add_trace(go.Histogram(x=x2))
# 设置覆盖模式
fig.update_layout(barmode='overlay') # 重要参数
# 设置透明度
fig.update_traces(opacity=0.8)
fig.show()
Стек режимов наложения для нескольких гистограмм
import plotly.graph_objects as go
import numpy as np
# 随机生成3组数据
x0 = np.random.randn(300)
x1 = np.random.randn(300) + 1
x2 = np.random.randn(300) + 1.5
fig = go.Figure()
fig.add_trace(go.Histogram(x=x0))
fig.add_trace(go.Histogram(x=x1))
fig.add_trace(go.Histogram(x=x2))
# 设置堆叠模式
fig.update_layout(barmode='stack')
# 设置透明度
fig.update_traces(opacity=0.8)
fig.show()
указать агрегатную функцию
Для одних и тех же данных в разных дорожках могут быть указаны разные функции агрегирования.В следующем примере: одна дорожка указана как подсчет статистических чисел, а другая дорожка указана как сумма суммирования.
import plotly.graph_objects as go
x = ["小明","小红","小红","小苏", "小明", "小苏"]
y = ["85","100","132","110","95","120"]
fig = go.Figure()
fig.add_trace(go.Histogram(histfunc="count", # 指定统计个数的聚合函数
y=y, x=x, name="统计个数"))
fig.add_trace(go.Histogram(histfunc="sum", # 指定求和函数
y=y, x=x, name="求和"))
fig.show()
Совокупная гистограмма
Включите функцию накопления через параметр cumulative_enabled: по умолчанию указано накопление числа.
x = list(range(101))
fig = go.Figure(data=[go.Histogram(
x=x, # x轴数据
cumulative_enabled=True
)]) # 开启累计功能
fig.show()
Персонализируйте гистограмму
В следующем примере строятся две гистограммы с использованием данных x0 и x1 на следующем рисунке:
fig = go.Figure()
# 直方图1
fig.add_trace(go.Histogram(
x=x0, # x轴数据
histnorm='percent', # 标准化方式
name='直方图1', #
xbins=dict( # x轴起始值和块的大小size
start=-4.0,
end=3.0,
size=0.5
),
marker_color='#0B89B5', # 标记颜色
opacity=0.75 # 透明度
))
# 直方图2
fig.add_trace(go.Histogram(
x=x1,
histnorm='percent',
name='直方图2',
xbins=dict(
start=-3.0,
end=4,
size=0.5
),
marker_color='#830A73',
opacity=0.75
))
fig.update_layout(
title=dict(text='<b>个性化</b>设置直方图', # 标题名称位置;标题中使用HTML标签
x=0.5,
y=0.97
),
xaxis_title=dict(text='取值'), # xy轴label设置
yaxis_title_text='count', # 默认聚合函数count
bargap=0.5, # 组间距离
bargroupgap=0.3 # 组内距离
)
fig.show()