【问题标题】:plotly express line chart, renaming "variable" in legend title and hover text?plotly express 折线图,在图例标题和悬停文本中重命名“变量”?
【发布时间】:2022-06-28 06:04:57
【问题描述】:

使用多行的 line 图表,您将如何更改下面看到的默认图例标题“变量”以及下面显示的悬停文本,以显示语义名称而不是比文本“变量”?

换句话说,假设您正在绘制的是线,每条线都描述了某个数据类的一些数量,并且您希望出现文本“类”而不是通用默认文本“变量”。 (a) 作为图例标题以及悬停数据点时。

【问题讨论】:

    标签: python plotly plotly-python


    【解决方案1】:

    简答:

    1.如果可能,请重命名您的数据集,否则:

    2.使用以下方法更改每个跟踪的图例标题和悬停模板:

    names = {'variable':'class'}
    fig.for_each_trace(lambda t: t.update(hovertemplate = t.hovertemplate.replace('variable', names['variable'])))
    fig.update_layout(legend_title_text = names['variable'])
    

    剧情:


    详情:

    为了确定,您必须提供数据集和代码 sn-p 才能重现您的问题。目前,我只能猜测您有一个长格式的数据集,并且您使用px.line 构建了一个图形。我将使用px.scatter,因为这会产生相同的结果,但对于太小而无法生成线图的数据集也是如此。

    所以,显示'variable' 的原因很可能是因为您有一个包含名称'variable' 的数据集。

    代码 1

    import plotly.express as px
    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'variable': ['gold', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
                       'index': [192]*10,
                        'value': list(np.arange(1,11))})
    
    fig = px.scatter(df, x = 'index', y = 'value', color = 'variable')
    fig.show()
    

    情节 1

    因此,解决问题的最直接方法是重命名数据集:

    代码 2

    import plotly.express as px
    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'class': ['gold', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
                       'index': [192]*10,
                        'value': list(np.arange(1,11))})
    
    fig = px.scatter(df, x = 'index', y = 'value', color = 'class')
    fig.show()
    

    情节 2

    如果这对您的现实挑战不起作用,您可以随时使用以下方法直接在图形对象中更改这些属性:

    fig.for_each_trace(lambda t: t.update(hovertemplate = t.hovertemplate.replace('variable', names['variable'])))
    
    fig.update_layout(legend_title_text = names['variable'])
    

    代码 3

    import plotly.express as px
    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'variable': ['gold', '2', '3', '4', '5', '6', '7', '8', '9', '10'],
                       'index': [192]*10,
                        'value': list(np.arange(1,11))})
    
    fig = px.scatter(df, x = 'index', y = 'value', color = 'variable')
    
    
    names = {'variable':'class'}
    fig.for_each_trace(lambda t: t.update(hovertemplate = t.hovertemplate.replace('variable', names['variable'])))
    fig.update_layout(legend_title_text = names['variable'])
    
    fig.show()
    

    情节 3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-29
      • 2021-07-30
      • 2022-01-08
      • 2021-10-27
      • 2022-01-03
      • 2013-06-17
      • 1970-01-01
      • 2018-03-21
      相关资源
      最近更新 更多