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

如何在Matplotlib 3D图中标记首尾数据点并添加图例

给Matplotlib 3D图的首尾数据点设置不同颜色并添加图例

我来帮你搞定这个需求~其实核心思路就是把首尾数据点单独提取出来绘制,和中间的线条/点区分开,这样就能分别设置颜色并给图例标记啦。

先给你一个完整的修改后的代码,你可以直接运行试试:

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 你的原始数据
x = np.array([0,1,2,3])
y = np.array([0,1,2,3])
z = np.array([0,1,2,3])

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# 先绘制中间的线条和普通点(用灰色弱化,突出首尾)
ax.plot(x, y, z, 'o-', color='#888888', markersize=5, label='中间数据点')

# 单独绘制第一个数据点:红色、更大尺寸
ax.scatter(x[0], y[0], z[0], color='red', s=100, marker='o', label='起始点')
# 单独绘制最后一个数据点:绿色、更大尺寸
ax.scatter(x[-1], y[-1], z[-1], color='green', s=100, marker='o', label='结束点')

# 显示图例
ax.legend()

plt.show()

关键步骤说明:

  • 先绘制整体的线条和中间点:用灰色(#888888)让中间部分不抢首尾点的风头,同时保留整体的连线关系。
  • 用scatter单独绘制首尾点:设置更显眼的颜色(红/绿)和更大的标记尺寸(s=100),确保它们一眼就能被看到。
  • 给每个绘制元素加上label参数:这样调用ax.legend()时,图例就能自动对应上每个元素的说明文字。

如果你不想显示中间的点,只保留连线,只需要把ax.plot里的'o-'改成'-'就可以啦,效果会更简洁。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 10:04:16