如何为Pandas转置DataFrame绘制的柱状图添加正确X轴标签?
解决Pandas柱状图X轴显示交易名称的问题
你的问题出在调用了df.transpose(),转置后数据结构被反转:原本作为行索引的交易名称变成了图例标签,原列名"duration"反而成了X轴标签。
直接去掉transpose()即可让X轴显示交易名称,修改后的代码如下:
import pandas as pd from pathlib import Path # 补充导入原代码用到的Path类 metrics_1_csv = Path("/tmp/metrics_2.csv") print("reading", metrics_1_csv) df = pd.read_csv(metrics_1_csv) # 按transaction分组求和,transaction自动成为行索引 df = df.groupby(["transaction"]).sum(numeric_only=True) # 按duration降序排序,保证X轴按预期顺序显示 df = df.sort_values(by=["duration"], ascending=False) # 直接调用plot.bar,无需转置 ax = df.plot.bar( stacked=False, title="各交易耗时总和", figsize=(8, 4), legend=False # X轴已显示交易名称,图例可省略 ) # 自定义轴标签让图表更清晰 ax.set_xlabel("交易名称") ax.set_ylabel("总耗时")
代码说明:
- 去掉
transpose()后,df的行索引是交易名称,列是求和后的duration,plot.bar默认会把行索引作为X轴标签。 - 加上
legend=False可以去掉和X轴重复的图例,避免冗余。 - 补充设置X/Y轴标签,让图表信息更直观。
运行这段代码后,X轴就会显示排序后的交易名称:ddd、bbb、ccc、aaa、eee,每个柱子对应该交易的总耗时。
内容的提问来源于stack exchange,提问作者Aage Torleif
相关产品推荐
相关产品推荐

