Plotly:如何重命名 plotly express 堆叠条形图的图例元素?

Plotly: How to rename legend elements of a plotly express stacked bar plot?

我使用 plotly 网站上给出的示例代码。

import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")
fig.show()

这给出了如下图。

如何重命名图例以将金、银、铜替换为第一、第二和第三?

将数据映射到您想要的值

import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", 
             color=long_df["medal"].map({"gold":"first","silver":"second","bronze":"third"}), 
             title="Long-Form Input")
fig.show()

我经常使用这种方法

fig.for_each_trace(lambda t: t.update(name = newnames[t.name]))

其中名称是 dict:

newnames = {'gold':'1', 'silver': '2', 'bronze':'3'}

剧情:

完整代码:

import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")

newnames = {'gold':'1', 'silver': '2', 'bronze':'3'}
fig.for_each_trace(lambda t: t.update(name = newnames[t.name]))

fig.show()