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

如何基于DataFrame两列条件筛选数据,绘制INL数据的带图例叠合折线图

实现代码

你可以直接遍历groupby生成的分组绘制折线,完整可运行代码如下:

import pandas as pd
import matplotlib.pyplot as plt

data = {'Test_no': [0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1], 
        'Temperature': [25, 25, 25, 25, 50, 50, 50, 50, 25, 25, 25, 25, 50, 50, 50, 50], 
        'Codes': [0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3,], 
        'INL':[0,1.1,-0.9,0, 0,1.0,-0.8,0, 0,0.9,-0.7,0, 0,1.2,-0.6,0]}

df = pd.DataFrame(data)

# 初始化画布
plt.figure(figsize=(8, 4))

# 按Test_no和Temperature分组后遍历每个分组绘制折线
for (test_no, temp), group_data in df.groupby(['Test_no', 'Temperature']):
    # X轴为Codes,Y轴为INL,图例标签显示测试编号和温度
    plt.plot(group_data['Codes'], group_data['INL'], label=f'Test_no={test_no}, Temp={temp}℃')

# 配置图表样式
plt.xlabel('Codes')
plt.ylabel('INL')
plt.legend() # 显示图例
plt.grid(alpha=0.3)
plt.show()

原有代码问题说明

你之前的代码存在两个明显错误:

  • 筛选逻辑覆盖:连续两次给变量d赋值,第二次的Test_no筛选直接覆盖了第一次的温度筛选结果,最终只拿到了所有Test_no为0的数据,没有区分温度维度
  • 未指定X轴:直接调用d['INL'].plot()默认会使用行索引作为X轴,不会取你需要的Codes列作为X轴

可选:筛选特定分组绘制

如果你的全量数据还有其他Test_no和Temperature取值,只需要绘制Test_no为0、1且Temperature为25、50的分组,可以先过滤原数据再做分组绘制:

# 先过滤符合条件的行
filtered_df = df[(df['Test_no'].isin([0, 1])) & (df['Temperature'].isin([25, 50]))]
# 再对filtered_df做groupby遍历绘图即可,后续逻辑和上面一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:54:04