python如何将自定义悬停标签应用于堆积比例条形图

n7taea2i  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(281)

我在plotly中创建了一个比例堆积条形图,但无法使用自定义数据正确更新悬停标签。
我的整个剧本是:

import pandas as pd
import numpy as np
import random

import plotly.graph_objects as go

# create the data frame

df = pd.DataFrame({
    "Season": np.repeat(["This Year", "Last Year"], 4),
    "Clothes": np.repeat(["Shorts", "T-Shirts", "Shirts", "Jeans"] * 2, 1),
    "Sales": random.sample(range(100), 8)
})

# manipulate data to obtain proportional data, each year should add to 100%

df = df.pivot(index = "Season", columns = "Clothes", values = "Sales")
LAST_YEAR_TOTAL  = df.loc[df.index == "Last Year"].melt().sum().tolist()[1]
THIS_YEAR_TOTAL  = df.loc[df.index == "This Year"].melt().sum().tolist()[1]
df.loc[df.index == "Last Year"] = df.loc[df.index == "Last Year"].div(LAST_YEAR_TOTAL).mul(100)
df.loc[df.index == "This Year"] = df.loc[df.index == "This Year"].div(THIS_YEAR_TOTAL).mul(100)

# create the proportional stacked bar chart

fig = go.Figure()
for item in df.columns:
    df_plot = df[item].reset_index().copy()

    fig.add_trace(go.Bar(x = df_plot[item], y = df_plot["Season"], 
                        orientation = "h",
                        name = item,
                        customdata = np.dstack(["Shorts", "T-Shirts", "Shirts", "Jeans"])[0],
                        hovertemplate = 
                        "Season: %{y} <br>" +
                        "Sales Percent: %{x:.0f}%<br>" +
                        "Item: %{customdata[0]}<extra></extra>"))

fig.update_layout(barmode = "stack",
                    title = "Proportion of Total Sales by Clothing Item")
fig.show()

输出:

我想删除图例,只是有悬停标签模板中的服装项目信息。可以看出,目前'短裤'出现在每个项目。
比例堆积条形图在plotly中似乎不是现成的选项,因此我必须将宽数据而不是长数据传递给图形,因此我无法将customdata应用于悬停标签。
如果有人能告诉我需要用什么形式传递数据 customdata 为了实现这一点,我将不胜感激,或者如果有另一种方法完全创建一个比例堆积条形图,我可以通过自定义悬停标签。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题