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

Python中使用Seaborn库绘制多线图及平滑多线图的实现方法

现有代码问题
  • sns.lineplot调用逻辑错误:直接传入宽格式DataFrame时,seaborn默认将行索引作为x轴、所有数值列作为y值绘图,不会自动识别Size为x轴,因此出现x轴为常量直线的异常表现。
  • sns.lmplot参数存在多处错误:一是传入的data参数为未定义的df变量,实际定义的DataFrame名为df1;二是DataFrame中无Time字段,只有Encrypt_Time、Decrypt_Time两个独立的时间列;三是仅3个样本点的前提下设置拟合阶数order=4不符合数学规则,4阶多项式拟合至少需要5个样本点,会直接触发报错。
需求实现方案

1. 绘制x轴为Size的多线图

先将宽格式DataFrame转换为长格式,统一时间字段后调用绘图接口即可:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

T = np.array([10.03,100.348,1023.385])
power1 = np.array([100000,86000,73000])
power2 = np.array([1008000,95000,1009000])

df1 = pd.DataFrame(data = {'Size': T, 'Encrypt_Time': power1, 'Decrypt_Time': power2})
# 转换为长格式,整合时间字段、标记时间类型
df_long = df1.melt(id_vars='Size', value_vars=['Encrypt_Time', 'Decrypt_Time'], var_name='Time_Type', value_name='Time')

# 绘制多线图,hue参数区分加密、解密两条曲线
exp1 = sns.lineplot(data=df_long, x='Size', y='Time', hue='Time_Type', marker='o')
plt.savefig('exp1.png')
plt.close()

2. 绘制平滑多线图

适配样本量调整拟合阶数,使用长格式DataFrame绘图即可:

# 仅3个样本点时最高支持2阶多项式拟合,通过hue参数同时对两类时间曲线做平滑
exp1_smooth = sns.lmplot(x='Size', y='Time', hue='Time_Type', data=df_long, ci=None, order=2, truncate=False)
plt.savefig('exp1_smooth.png')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:24:03