Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер
Всем привет, меня зовут Питер~
Я давно не обновлял статьи, связанные с сюжетом, и наконец-то сделал одну к Национальному дню. Выбранные темы:Поэкспериментируйте с настройками легенды Plotly, также является темой, о которой я всегда хотел написать.Основное содержание статьи:
Адрес официального сайта обучения:сюжет LY.com/Python/Lego…
Сюжетно сериализованные статьи
Статья Plotly теперь обновлена до 16-й статьи, добро пожаловать на чтение. Рекомендуемые статьи:
Импорт библиотек и данных
Основными данными, используемыми в этой статье, являются данные о потреблении:
import pandas as pd
import numpy as np
import plotly_express as px
import plotly.graph_objects as go
# 消费数据
tips = px.data.tips()
tips.head()
количество элементов легенды
В основном легенды, состоящие из отдельных элементов и нескольких элементов.
один элемент
fig = px.scatter(
tips, # 数据库
x="total_bill", # xy轴
y="tip",
color="sex" # 图例是通过颜色区分
)
fig.show()
Легенда, состоящая из нескольких элементов
Когда несколько элементов различаются одновременно, для отображения данных будут созданы разные формы:
fig = px.scatter(
tips,
x="total_bill",
y="tip",
color="sex", # 颜色和标记来同时区分
symbol="smoker"
)
fig.show()
Изменить название легенды
При использовании plotly_express параметр labels в основном используется для изменения имени легенды.
fig = px.scatter(
tips,
x="total_bill",
y="tip",
color="sex", # 颜色和标记;symbol主要来控制形状
symbol="smoker",
# 通过labels来改变默认的图例名称
labels={"sex": "Gender", "smoker": "Smokes"})
fig.show()
Также возможно генерировать графики с несколькими срезами:
fig = px.scatter(
tips,
x="total_bill",
y="tip",
color="sex",
symbol="smoker",
facet_col="time", # 切面图的列元素
# 改变图例名称
labels={"sex": "Gender", "smoker": "Smokes"})
fig.show()
Установить порядок легенды
Построение через plotly_express
Установите порядок легенды параметром legend.traceorder
fig = px.bar(
tips, # 数据框
x="day", # xy轴
y="total_bill",
color="smoker", # 颜色
barmode="stack", # 柱状图模式
facet_col="sex", # 切面图的列元素
category_orders={"day": ["Thur", "Fri", "Sat", "Sun"], # 自定义顺序
"smoker": ["Yes", "No"],
"sex": ["Male", "Female"]})
fig.update_layout(legend_traceorder="reversed") # 设置顺序
fig.show()
⚠️ДефолтВот порядок, в котором поля появляются в исходных данных в соответствии с фактической легендой:
fig = px.bar(
tips, # 数据框
x="day", # xy轴
y="total_bill",
color="smoker", # 颜色
barmode="stack", # 柱状图模式
facet_col="sex", # 切面图的列元素
)
fig.show()
Построение через plotly.graph_objects
В основном мы задаем порядок через параметр legendrank. Уведомление:Версия plotly должна быть V5.0 и выше.
pip install --upgrade plotly # 升级版本
Если мы не используем параметр legendrank:
fig = go.Figure()
# 添加4个不同的轨迹数据
fig.add_trace(go.Bar(name="first", x=["a", "b"], y=[21,27]))
fig.add_trace(go.Bar(name="second", x=["a", "b"], y=[32,18]))
fig.add_trace(go.Bar(name="third", x=["a", "b"], y=[11,32]))
fig.add_trace(go.Bar(name="fourth", x=["a", "b"], y=[21,13]))
fig.show()
Порядок, в котором появляется приведенная выше легенда, — это порядок первого, второго, третьего и четвертого, то есть порядок, в котором добавляются данные дорожки.
Ниже мы используем параметр legendrank:
fig = go.Figure()
# 添加4个不同的轨迹数据
fig.add_trace(go.Bar(name="second", # 2
x=["a", "b"],
y=[32,18],
legendrank=2))
fig.add_trace(go.Bar(name="third", # 3
x=["a", "b"],
y=[11,32],
legendrank=3))
fig.add_trace(go.Bar(name="first", # 1
x=["a", "b"],
y=[21,27],
legendrank=1))
fig.add_trace(go.Bar(name="fourth", # 4
x=["a", "b"],
y=[21,13],
legendrank=4))
fig.show()
Порядок добавления трасс отличается от первого, второго и т.д. На самом деле он все равно отсортирован по параметру legendrank
Показать и скрыть легенду
На всех приведенных выше графиках легенда отображается по умолчанию, мы также можем ее скрыть:
# 隐藏图例
fig = px.scatter(
tips,
x="total_bill",
y="tip",
color="sex",
symbol="smoker"
)
fig.update_layout(showlegend=False) # 隐藏图例元素
fig.show()
Расположение легенды
Легенда по умолчанию справа, мы можем использовать параметры для изменения положения легенды
# 默认情况:图例在右上角
fig = px.scatter(
tips,
x="total_bill",
y="tip",
size="tip",
color="sex", # 颜色和标记来同时区分
symbol="smoker"
)
fig.show()
Измените положение легенды, задав параметры:
# 默认情况
fig = px.scatter(
tips,
x="total_bill",
y="tip",
size="tip",
color="sex", # 颜色和标记来同时区分
symbol="smoker"
)
# 通过位置参数来改变
fig.update_layout(legend=dict(
yanchor="top", # y轴顶部
y=0.99,
xanchor="left", # x轴靠左
x=0.01
))
fig.show()
горизонтализация легенды
По умолчанию легенда отображается вертикально, а горизонтальное отображение достигается ориентацией параметра. Это горизонтальное отображение очень полезно, когда имеется много категорий легенд.
Данные ВВП в графике используются в этом случае:
Легенда по умолчанию отображается вертикально:
df = px.data.gapminder().query("year==2007") # 选择2007数据
fig = px.scatter(
df, # 数据框和x、y轴数据
x="gdpPercap",
y="lifeExp",
color="continent", # 颜色
size="pop", # 大小
size_max=45) # 最大值
fig.update_layout(legend=dict(
# orientation="h", # 控制水平显示
yanchor="bottom", # 分别设置xy轴的位置和距离大小
y=1.02,
xanchor="right",
x=1
))
fig.show()
Включим легенду горизонтального отображения:
# 开启水平显示
fig = px.scatter(
df,
x="gdpPercap",
y="lifeExp",
color="continent",
size="pop",
size_max=45)
fig.update_layout(legend=dict(
orientation="h", # 开启水平显示
yanchor="bottom",
y=1.02,
xanchor="right",
x=1
))
fig.show()
Дисплей персонализации легенды
fig = px.scatter(
df,
x="gdpPercap",
y="lifeExp",
color="continent",
size="pop",
size_max=45
)
fig.update_layout(
legend=dict(
x=.82, # 设置图例位置
y=0,
traceorder="reversed",
title_font_family="Times New Roman", # 图例标题字体
font=dict( # 图例字体
family="Courier",
size=13,
color="red" # 颜色:红色
),
bgcolor="LightSteelBlue", # 图例背景色
bordercolor="Black", # 图例边框颜色和宽度
borderwidth=2
)
)
fig.show()
Легенда набора графических объектов
Следующие несколько случаев основаны на plotly.graph_objects для установки легенды:
- имя легенды
имя легенды
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
name="图1" # 图例名称
))
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
name="图2" # 图例名称
))
fig.show()
название легенды
fig = go.Figure()
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[1, 2, 3, 4, 5],
name="图1"
))
fig.add_trace(go.Scatter(
x=[1, 2, 3, 4, 5],
y=[5, 4, 3, 2, 1],
name="图2"
))
# 重点参数:设置图例标题
fig.update_layout(legend_title_text='图例标题')
fig.show()
Показать или скрыть легенду
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(
x=list(range(5)),
y=list(range(5)),
showlegend=False # 不显示这个轨迹的图例
))
fig.add_trace(go.Scatter(
x=list(range(5)),
y=list(range(5))[::-1],
))
fig.update_layout(showlegend=True) # 整体图例显示
fig.show()
Установить размер элемента легенды
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scatter(
x=list(range(5)),
y=list(range(5)),
mode='markers+lines', # 模式的选择
marker={'size':10} # 标记大小
))
fig.add_trace(go.Scatter(
x=list(range(5)),
y=[5, 4, 3, 2, 1],
mode='lines+markers',
marker={'size':50}
))
fig.update_layout(legend= {'itemsizing': 'constant'}) # trace 和constant两种设置
fig.show()
Когда размер элементов постоянный:
Когда значение itemsizing равно trace: