python可视化plotly 图例(legend)设置

作者:Eloik 时间:2021-05-17 11:17:56 

一、图例(legend)

import plotly.io as pio
import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
import pandas as pd
import numpy as np

# 设置plotly默认主题
pio.templates.default = 'plotly_white'

# 设置pandas打印时显示所有列
pd.set_option('display.max_columns', None)

二、update_layout(legend={}) 相关参数及示例

官方文档:https://plotly.com/python/reference/layout/#layout-showlegend

官方示例:https://plotly.com/python/legend/

  • showlegend:是否显示图例,以下任一种情况发生时,该参数默认值为 True:1. 两个及两个以上的 trace 2. 有饼图3. 有一个 trace 显式指定 showlegend=True

  • legend:图例相关设置,字典类型,可取属性如下:

    • bgcolor:设置图例的背景颜色

    • bordercolor:设置图例边框的颜色

    • borderwidth:设置图例边框的宽度

    • font:设置图例条目的文本字体,字典类型,可取属性如下:

    • color:字体颜色

    • family:字体,字符串,可以为 Arial、Balto、Courier New、Droid Sans、Droid Serif、Droid Sans Mono、Gravitas One、Old Standard TT、Open Sans、Overpass、PT Sans Narrow、Raleway、Times New Roman

    • size:字体大小

  • orientation:设置图例的方向。'v'(默认值)表示竖直显示图例、'h'表示水平显示图例

  • title:设置图例的标题,字典类型,可取属性如下:

font:设置图例条目的文本字体,字典类型,可取属性如下:

  • color:字体颜色

  • family:字体,字符串,可以为 Arial、Balto、Courier New、Droid Sans、Droid Serif、Droid Sans Mono、Gravitas One、Old Standard TT、Open Sans、Overpass、PT Sans Narrow、Raleway、Times New Roman

  • size:字体大小

side:设置图例标题相对于条目的位置。当 orientation='v' 时默认为 'top'、当 orientation='h'时默认为 'left'、当为 'top left'时可用于扩展图例的面积
text:设置图例标题

  • grouptitlefont:设置图例组名的文本字体,字典类型,可取属性如下:

    • color:字体颜色

    • family:字体,字符串,可以为 Arial、Balto、Courier New、Droid Sans、Droid Serif、Droid Sans Mono、Gravitas One、Old Standard TT、Open Sans、Overpass、PT Sans Narrow、Raleway、Times New Roman

    • size:字体大小

  • itemsizing:设置图例条目的符号是否跟其 ‘trace’ 有关,如果为 'constant',则所有条目的符号大小一致。

    • 可取 'trace'、 'constant'

  • itemwidth:设置条目的宽度(除 title 以外的部分)

    • 大于等于30的浮点数,默认值为30

  • tracegroupgap:设置图例组之间的间隔

    • 大于等于0的浮点数,默认值为10

traceorder:设置图例条目的顺序。如果为 'normal',条目将从上到下按照输入数据的顺序排列;如果为 'reversed',则按照输入数据的逆序排列;如果为 'grouped',条目按照组顺序显示(如果 trace 中的legendgroup 设定了);如果为 'grouped+reversed',则与 'grouped'的顺序相反
valign:设置条目符号和对应文本的竖直对齐方式。
可取 'middle'(默认值)、'top'、'bottom'

python可视化plotly 图例(legend)设置

df = px.data.gapminder().query("year==2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
    size="pop", size_max=45, log_x=True)

fig.update_layout(legend=dict(
    yanchor="top",
    y=0.99,
    xanchor="left",
    x=0.01
))

fig.write_image('../pic/legend_1.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

df = px.data.gapminder().query("year==2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
    size="pop", size_max=45, log_x=True)

fig.update_layout(legend=dict(
    orientation="h",
    yanchor="bottom",
    y=1.02,
    xanchor="center",
    x=0.5,
    title_text=''
))

fig.write_image('../pic/legend_2.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

df = px.data.gapminder().query("year==2007")
fig = px.scatter(df, x="gdpPercap", y="lifeExp", color="continent",
    size="pop", size_max=45, log_x=True)

fig.update_layout(
    legend=dict(
        x=0,
        y=1,
        traceorder="reversed",
        title_font_family="Times New Roman",
        font=dict(
            family="Courier",
            size=12,
            color="black"
        ),
        bgcolor="LightSteelBlue",
        bordercolor="Black",
        borderwidth=2
    )
)

fig.write_image('../pic/legend_3.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

fig = go.Figure()

# 使用 name 参数指定条目文本,legendrank 指定顺序
fig.add_trace(go.Bar(name="fourth", x=["a", "b"], y=[2,1], legendrank=4))
fig.add_trace(go.Bar(name="second", x=["a", "b"], y=[2,1], legendrank=2))
fig.add_trace(go.Bar(name="first", x=["a", "b"], y=[1,2], legendrank=1))
fig.add_trace(go.Bar(name="third", x=["a", "b"], y=[1,2], legendrank=3))

fig.write_image('../pic/legend_4.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[2, 1, 3],
    legendgroup="group",  # this can be any string, not just "group"
    legendgrouptitle_text="First Group Title",
    name="first legend group",
    mode="markers",
    marker=dict(color="Crimson", size=10)
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[2, 2, 2],
    legendgroup="group",
    name="first legend group - average",
    mode="lines",
    line=dict(color="Crimson")
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[4, 9, 2],
    legendgroup="group2",
    legendgrouptitle_text="Second Group Title",
    name="second legend group",
    mode="markers",
    marker=dict(color="MediumPurple", size=10)
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3],
    y=[5, 5, 5],
    legendgroup="group2",
    name="second legend group - average",
    mode="lines",
    line=dict(color="MediumPurple")
))

fig.update_layout(title="Try Clicking on the Legend Items!")

fig.write_image('../pic/legend_5.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[1, 2, 3, 4, 5],
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[5, 4, 3, 2, 1],
    visible='legendonly'
))

fig.write_image('../pic/legend_6.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[1, 2, 3, 4, 5],
    showlegend=False
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[5, 4, 3, 2, 1],
))

fig.update_layout(showlegend=True)

fig.write_image('../pic/legend_7.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

fig = go.Figure()

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[1, 2, 3, 4, 5],
    mode='markers',
    marker={'size':10}
))

fig.add_trace(go.Scatter(
    x=[1, 2, 3, 4, 5],
    y=[5, 4, 3, 2, 1],
    mode='markers',
    marker={'size':100}
))

fig.update_layout(legend= {'itemsizing': 'trace'})

fig.write_image('../pic/legend_8.png', scale=2)
fig.show()

python可视化plotly 图例(legend)设置

来源:https://blog.csdn.net/weixin_45826022/article/details/122912525

标签:python,plotly,legend
0
投稿

猜你喜欢

  • 微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)

    2024-05-11 09:42:26
  • Python socket实现多对多全双工通信的方法

    2023-05-02 17:31:38
  • python中MySQLdb模块用法实例

    2024-01-25 01:19:27
  • PyQt实现界面翻转切换效果

    2023-12-27 04:49:46
  • Python个人博客程序开发实例信息显示

    2022-07-06 15:31:05
  • python2.7 安装pip的方法步骤(管用)

    2022-02-11 06:28:43
  • 你是真正的用户体验设计者吗? Ⅵ

    2008-04-19 18:23:00
  • mysql慢查询优化之从理论和实践说明limit的优点

    2024-01-26 11:59:51
  • Python3内置模块pprint让打印比print更美观详解

    2022-02-04 01:55:28
  • 解析Go语言编程中的struct结构

    2024-04-25 13:21:11
  • Python 实现任意区域文字识别(OCR)操作

    2021-04-23 03:52:37
  • 区分有单选框的选项和普通的选项

    2008-04-17 13:44:00
  • windows下python虚拟环境virtualenv安装和使用详解

    2023-08-30 11:06:39
  • Python机器学习应用之支持向量机的分类预测篇

    2023-08-29 20:42:55
  • 图片链接轮换代码, 支持预载

    2007-10-16 19:57:00
  • 你喜欢篮球吗?Python实现篮球游戏

    2023-10-26 00:28:36
  • Mysql慢查询优化方法及优化原则

    2024-01-12 17:33:18
  • 单击按钮将内容复制到剪贴板

    2008-08-22 13:08:00
  • Python基础之条件控制操作示例【if语句】

    2021-02-09 09:30:02
  • Ubuntu 18.04下mysql 8.0 安装配置方法图文教程

    2024-01-25 18:05:41
  • asp之家 网络编程 m.aspxhome.com