Plotly修改图例标签及对柱状图数值进行聚合统计的实现方法
实现方案
你需要的两个需求可以按以下步骤修改代码实现:
1. 按年份对每个OPINION取值的总得分求和
你现在的代码没有指定聚合规则,所以输出结果不符合预期。只需要在px.bar参数中新增histfunc='sum',即可自动按「年份+OPINION类别」分组对OPINION值求和。
2. 自定义图例标签
可以先创建OPINION取值到自定义名称的映射字典,直接替换数据集里的OPINION值即可,同步更新颜色映射的键保证颜色对应正确。如果不想修改原始数据集,也可以在绘图后通过遍历trace批量修改图例名称。
完整修改后代码
import plotly.express as px # 定义OPINION取值到自定义标签的映射 opinion_label_map = { 1: "Very bad", 2: "Bad", 3: "Neutral", 4: "Good", 5: "Very good", "inconnu": "Unknown" } # 替换数据集中的OPINION值为自定义标签 dftotal['OPINION'] = dftotal['OPINION'].map(opinion_label_map) # 同步更新颜色映射规则 color_discrete_map = { "Very good": "green", "Good": "lightgreen", "Neutral": "yellow", "Bad": "orange", "Very bad": "red", "Unknown": "grey" } fig = px.bar( data_frame=dftotal, x="YEAR", y="OPINION", title="Score des opinions par années", color="OPINION", width=1300, height=700, template='plotly_dark', color_discrete_map=color_discrete_map, histfunc='sum' # 核心参数:实现分组求和 ) fig.update_layout(title_x=0.5) fig.show()
不修改原始数据集的图例修改方案
如果你不想改动原始的dftotal数据,可以在绘图后加上以下代码批量修改图例名称:
opinion_name_map = { '1': 'Very bad', '2': 'Bad', '3': 'Neutral', '4': 'Good', '5': 'Very good', 'inconnu': 'Unknown' } fig.for_each_trace(lambda t: t.update(name = opinion_name_map[t.name]))
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

