You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中用Pandas绘制含多图例的时隙DSP峰值数据图表?

如何用Pandas绘制按Slot独立图例的DSP使用率图表

我来帮你解决这个问题——要实现像Excel那样每个Slot独立显示图例的Pandas图表,关键是调整数据的结构,让每个Slot对应的系列能被Pandas正确识别并生成单独的图例项。下面是两种可行的解决方案:

方法一:调整透视表结构,让Slot作为列

当前你的透视表把SDATE、Subrack、Slot都放在索引里,导致绘图时无法按Slot拆分系列。我们可以把Slot(加上Subrack做区分)移到列的位置,这样每个Slot对应的峰值数据会成为单独的列,绘图时自动生成对应图例。

import pandas as pd
import matplotlib.pyplot as plt

# 重新构造透视表:时间作为x轴索引,Subrack+Slot作为列
table = pd.pivot_table(
    data,
    index=['SDATE'],  # 仅保留时间作为索引,对应x轴
    columns=['Subrack', 'Slot'],  # 每个Subrack+Slot组合作为单独一列
    values='VS.DSP.UsagePeak',
    aggfunc='max'
)

# 绘制图表并优化样式
table.plot(figsize=(10, 6))  # 设置合适的图表尺寸
plt.ylabel("VS.DSP.UsagePeak")
plt.xticks(rotation=20, fontsize=8)  # 调整x轴标签的旋转角度和字体大小
plt.xlabel("Time")
plt.title("Peak DSP Usage by Slot")
# 将图例放在图表外侧,避免遮挡数据
plt.legend(title='Subrack-Slot', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()  # 自动调整布局,确保图例和标签完整显示
plt.show()

如果不需要区分Subrack,只把Slot作为columns参数即可:

table = pd.pivot_table(
    data,
    index=['SDATE'],
    columns=['Slot'],
    values='VS.DSP.UsagePeak',
    aggfunc='max'
)

方法二:分组后手动绘制,自定义图例

如果需要更灵活的样式控制(比如指定每个Slot的颜色),可以用groupby分组后逐个绘制,手动设置图例标签:

import pandas as pd
import matplotlib.pyplot as plt

# 按Subrack和Slot分组,确保每个Slot的系列独立
groups = data.groupby(['Subrack', 'Slot'])

plt.figure(figsize=(10, 6))
for (subrack, slot), group in groups:
    # 计算每个Slot每天的峰值
    daily_peak = group.groupby('SDATE')['VS.DSP.UsagePeak'].max()
    # 绘制并设置图例标签
    daily_peak.plot(label=f"Subrack {subrack} - Slot {slot}")

# 配置图表样式
plt.ylabel("VS.DSP.UsagePeak")
plt.xticks(rotation=20, fontsize=8)
plt.xlabel("Time")
plt.title("Peak DSP Usage by Slot")
plt.legend(title='Slot Details', bbox_to_anchor=(1.05, 1), loc='upper left')
plt.tight_layout()
plt.show()

这两种方法都能实现你想要的效果——每个Slot对应独立的图例项,和Excel示例一致。你可以根据自己的需求选择其中一种。

内容的提问来源于stack exchange,提问作者Sadegh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:32:27