Python Plotly:在hoverlabel中显示值,而不是在堆叠区域图中显示百分比`groupnorm=';百分比'`

Python Plotly:在hoverlabel中显示值,而不是在堆叠区域图中显示百分比`groupnorm=';百分比'`,python,plotly,data-visualization,plotly-python,Python,Plotly,Data Visualization,Plotly Python,在下图中,悬停标签显示比例百分比值。我宁愿它显示出在那个特定日期每个大陆的实际价值。我不知道怎样才能做到。为清楚起见 亚洲将是9而不是37.5,北美是13而不是54.16667,欧洲是2而不是8.333333(根据下文提供的数据) 日期 价值 大陆 2021-01-01 3. 亚洲 2021-01-02 7. 亚洲 2021-01-03 9 亚洲 2021-01-04 13 亚洲 2021-01-01 5. 北美 2021-01-02 8. 北美 2021-01-03 13 北美 2021-0

在下图中,悬停标签显示比例百分比值。我宁愿它显示出在那个特定日期每个大陆的实际价值。我不知道怎样才能做到。为清楚起见

亚洲将是
9
而不是
37.5
,北美是
13
而不是
54.16667
,欧洲是
2
而不是
8.333333
(根据下文提供的数据)

日期 价值 大陆 2021-01-01 3. 亚洲 2021-01-02 7. 亚洲 2021-01-03 9 亚洲 2021-01-04 13 亚洲 2021-01-01 5. 北美 2021-01-02 8. 北美 2021-01-03 13 北美 2021-01-04 19 北美 2021-01-01 0 欧洲 2021-01-02 0 欧洲 2021-01-03 2. 欧洲 2021-01-04 3. 欧洲 目标 设置
groupnorm='percent'
后,保持绘图原样,但仅在hoverinfo中显示单个值

答复
  • 使用
    df['actual]=df['value']
  • px.area()中包含
    hover_data=['value','actual']
  • fig.update_跟踪(hovertemplate='{y}')
    更改为
    fig.update_跟踪(hovertemplate='{customdata}')
  • 地块1

    细节 必须包含重复列的原因是
    px.area()
    自动计算
    px.area中分配给
    y
    的列的百分比(df,x='date',y='value'…
    。设置
    悬停数据=['value',actual']
    ,不计算
    实际值
    ,该值稍后可通过
    fig.update\u跟踪(hovertemplate='%{customdata}')
    在hoverinfor中访问

    如果您从设置中删除
    fig.update_跟踪(hovertemplate=…)
    ,您将获得以下可能也感兴趣的hoverinfo:

    情节2

    在这种情况下,将
    更改为
    百分比
    可能更有意义,毕竟它会显示:

    情节3

    图1的完整代码 图2的完整代码 图3的完整代码
    这和px.area中没有groupnorm参数不一样吗?@Pygirl哈哈,是的!哦,好吧,回到绘图板=)@Pygirl我希望你会发现我的最新编辑更有用。我试图通过
    customdata
    解决它,但无法(不知道如何应用)+1演示:D.我明白了,关键点是
    悬停数据
    ,我在网上任何地方都找不到。@vesland一点也不急。我也会想办法,如果我不明白,我会发帖问。
    import pandas as pd
    import plotly.express as px
    
    df = pd.DataFrame({'date': list(pd.date_range(start='2021-01-01', periods=4, freq='D')) *3,
                       'value': [3,7,9,13,5,8,13,19,0,0,2,3],
                       'continent':['Asia'] * 4 + ['North America'] * 4 + ['Europe'] * 4})
    
    df['actual'] = df['value']
    
    fig = px.area(df, x='date', y='value', color='continent', groupnorm='percent',
                  hover_data = ['value', 'actual'])
    fig.update_traces(hovertemplate='%{customdata}')
    
    
    fig.update_layout(hovermode='x unified')
    fig.show()
    
    import pandas as pd
    import plotly.express as px
    
    df = pd.DataFrame({'date': list(pd.date_range(start='2021-01-01', periods=4, freq='D')) *3,
                       'value': [3,7,9,13,5,8,13,19,0,0,2,3],
                       'continent':['Asia'] * 4 + ['North America'] * 4 + ['Europe'] * 4})
    
    df['actual'] = df['value']
    
    fig = px.area(df, x='date', y='value', color='continent', groupnorm='percent',
                  hover_data = ['value', 'actual'])
    # fig.update_traces(hovertemplate='%{customdata}')
      
    fig.update_layout(hovermode='x unified')
    fig.show()
    
    import pandas as pd
    import plotly.express as px
    
    df = pd.DataFrame({'date': list(pd.date_range(start='2021-01-01', periods=4, freq='D')) *3,
                       'percent': [3,7,9,13,5,8,13,19,0,0,2,3],
                       'continent':['Asia'] * 4 + ['North America'] * 4 + ['Europe'] * 4})
    
    df['actual'] = df['percent']
    
    fig = px.area(df, x='date', y='percent', color='continent', groupnorm='percent',
                  hover_data = ['percent', 'actual'])
    # fig.update_traces(hovertemplate='%{customdata}')
        
    fig.update_layout(hovermode='x unified')
    fig.show()