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

基于Python 3.6.4、Matplotlib 2.1.2的PKa数据多折线图绘制问题

解决多折线图绘制问题

嘿,我来帮你搞定这个按ID绘制多折线图的需求!结合你给出的环境信息,我整理了完整的可运行代码,还会拆解关键步骤帮你理解:

环境确认

  • Python 3.6.4
  • Jupyter Notebook 5.4
  • matplotlib 2.1.2

修正后的完整代码

import matplotlib.pyplot as plt
import pandas as pd

# 假设你的数据集已经加载到df中,这里模拟一份示例数据(如果你的数据已存在可以删掉这部分)
data = {
    'ID': ['A', 'A', 'A', 'B', 'B', 'B'],
    'Nominal_Timepoint': [0, 2, 4, 0, 2, 4],
    'PKa Data': [1.2, 3.5, 2.8, 0.9, 4.1, 3.3]
}
df = pd.DataFrame(data)

# 关键步骤1:按Nominal_Timepoint排序,确保X轴顺序正确
df_sorted = df.sort_values(by='Nominal_Timepoint')

# 关键步骤2:按ID分组,获取每个唯一ID的数据集
groups = df_sorted.groupby('ID')

# 初始化绘图
plt.figure(figsize=(8, 5))

# 关键步骤3:遍历每个分组绘制折线
for name, group in groups:
    plt.plot(group['Nominal_Timepoint'], group['PKa Data'], marker='o', label=f'ID {name}')

# 图表美化
plt.xlabel('Nominal Timepoint')
plt.ylabel('PKa Data')
plt.title('PKa Data vs Nominal Timepoint by ID')
plt.legend()
plt.grid(True, alpha=0.3)

# 在Jupyter Notebook中显示图表
plt.show()

关键步骤解释

  • 数据排序:通过sort_values(by='Nominal_Timepoint')确保X轴的时间点是按顺序排列的,避免折线因为数据乱序出现跳跃的情况。
  • 分组处理:用groupby('ID')把数据按唯一ID拆分成两个子数据集,这样就能分别为每个ID绘制独立的折线。
  • 折线定制:给每个折线添加marker='o'(圆点标记),方便观察每个数据点,同时用label参数指定图例名称,让图表更易读。
  • Jupyter适配:最后用plt.show()确保图表能在Notebook中正常显示。

额外注意事项

如果你的Nominal_Timepoint是字符串类型(比如带单位的文本),需要先转换成数值类型再排序,比如:

df['Nominal_Timepoint'] = pd.to_numeric(df['Nominal_Timepoint'], errors='coerce')

如果数据中有缺失值,可以先用df.dropna(subset=['Nominal_Timepoint', 'PKa Data'])清理数据后再绘图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:48:39