如何在Matplotlib中为数据集中的每组数据绘制三维折线?
3D折线图绘制:按Cone值分组连接数据点
问题描述
数据集中每行包含三个数据项(cone、ramp、temp),同一cone值对应多组数据。如何为每个cone值对应的所有数据点绘制折线,达到示例图的要求?
现有代码
import matplotlib.pyplot as plt import pandas as pd from mpl_toolkits.mplot3d import Axes3D dataset = pd.read_csv('data.csv') X = dataset.iloc[:, 0:2].values y = dataset.iloc[:, -1].values fig = plt.figure(figsize=(10, 10)) ax = fig.add_subplot(111, projection='3d') ax.scatter(X[:, 0], X[:, 1], y, marker='.', color="red") ax.set_xlabel("Cone") ax.set_ylabel("Time") ax.set_zlabel("Temp") plt.show()
数据集
cone,ramp,temp 4,15,1141 4,60,1162 4,150,1183 5,15,1159 5,60,1186 5,150,1207 6,15,1185 6,60,1222 6,150,1243 7,15,1201 7,60,1239 7,150,1257 8,15,1211 8,60,1249 8,150,1271 9,15,1224 9,60,1260 9,150,1280 10,15,1251 10,60,1285 10,150,1305 11,15,1272 11,60,1294 11,150,1315 12,15,1285 12,60,1306 12,150,1326 13,15,1310 13,60,1331 13,150,1348 14,15,1351 14,60,1365 14,150,1384
解决方案
核心逻辑是按cone值分组,对每组数据单独绘制3D折线,同时保留散点增强数据辨识度。
修改后完整代码
import matplotlib.pyplot as plt import pandas as pd from mpl_toolkits.mplot3d import Axes3D # 读取数据集 dataset = pd.read_csv('data.csv') fig = plt.figure(figsize=(10, 10)) ax = fig.add_subplot(111, projection='3d') # 按cone分组遍历,绘制每组折线 for cone_val, group in dataset.groupby('cone'): x = group['cone'].values y = group['ramp'].values z = group['temp'].values # 绘制折线,添加图例标签 ax.plot(x, y, z, marker='o', label=f'Cone {cone_val}') # 保留散点(可选,突出单个数据点) ax.scatter(x, y, z, color='red', marker='.') # 设置坐标轴标签 ax.set_xlabel("Cone") ax.set_ylabel("Ramp/Time") ax.set_zlabel("Temp") # 添加图例区分不同分组 ax.legend() plt.show()
关键说明
dataset.groupby('cone'):将数据集按cone值拆分,每个分组对应同一cone的所有数据ax.plot:绘制3D折线,marker='o'让折线节点显示圆点,label用于图例区分不同cone组- 散点绘制可选,若不需要突出单个数据点可删除对应行
内容的提问来源于stack exchange,提问作者Dan Luba
相关产品推荐
相关产品推荐

