Plotly:如何修改plotly express堆叠条形图的图例元素名称?
问题描述
我使用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()
运行代码后生成的图表如下所示:
请问如何修改图例,将其中的gold、silver、bronze分别替换为first、second、third?如果需要替换为中文标签,修改方法同理。
解决方案
有两种常用实现方式,可根据实际场景选择:
方法1:修改原始数据集分类值
直接替换数据集中medal列的取值,绘图时图例自动适配新标签,适合不需要保留原始分类值的场景,示例代码如下:
import plotly.express as px long_df = px.data.medals_long() # 替换标签,需要中文的话修改对应值为「金牌」「银牌」「铜牌」即可 long_df["medal"] = long_df["medal"].replace({ "gold": "first", "silver": "second", "bronze": "third" }) fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input") fig.show()
方法2:不改动原始数据,直接修改图例文本
如果需要保留原始数据集的标签,可以直接更新图表轨迹的显示名称,仅修改图例展示内容,示例代码如下:
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") # 定义标签映射规则,需要中文修改对应值即可 name_mapping = { "gold": "first", "silver": "second", "bronze": "third" } # 遍历所有轨迹更新显示名称 for trace in fig.data: trace.name = name_mapping[trace.name] fig.show()
内容的提问来源于stack exchange,提问作者aj7amigo
相关产品推荐
相关产品推荐

