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

求助:Matplotlib实现单色系带连线的4D风场可视化

问题:3D轨迹可视化调整需求

我在网络上搜索多日未找到解决方案,恳请技术同行帮忙查看。我需要绘制4D可视化图,展示特定经度、纬度、海拔维度下的风向变化。当前用Matplotlib的scatter函数绘图时,不同海拔的点之间没有连线,呈现跳跃感,希望添加连线表示移动轨迹;同时希望将点的颜色改为单一黑色,而非当前的多色渐变效果。

原代码

import numpy as np
from matplotlib import pyplot as plt

lon = np.array([278.6695, 278.67,278.672265 ])
lat = np.array([48.476151, 48.472578621119, 48.45994295 ])
Z  = np.array([20000, 26502.51477,26501.65171])
distance = np.array([72.63856248, 70, 60 ])

fig = plt.figure(6)
ax = fig.add_subplot(111, projection='3d')
img = ax.scatter(lon, lat, Z, c=distance, cmap='inferno', alpha=1)
fig.colorbar(img)

ax.set_xlabel('longitude [Deg]')
ax.set_ylabel('latitude [Deg]')
ax.set_zlabel('Altitude [Km]')

plt.show()

当前效果与目标

  • 当前单组数据绘图结果:3D空间内的彩色散点,点间无连线,右侧配有对应distance值的颜色条
  • 完整数据绘图结果:多组彩色散点分布在3D空间,无连线,右侧有颜色条
  • 目标效果图:3D空间内的黑色散点,点间由连线构成连续轨迹,无颜色条

修改后的代码

import numpy as np
from matplotlib import pyplot as plt

lon = np.array([278.6695, 278.67,278.672265 ])
lat = np.array([48.476151, 48.472578621119, 48.45994295 ])
Z  = np.array([20000, 26502.51477,26501.65171])
distance = np.array([72.63856248, 70, 60 ])

fig = plt.figure(6)
ax = fig.add_subplot(111, projection='3d')
# 绘制轨迹连线
ax.plot(lon, lat, Z, color='black', linewidth=1)
# 绘制黑色散点,s参数可调整点大小
ax.scatter(lon, lat, Z, color='black', s=50, alpha=1)

ax.set_xlabel('longitude [Deg]')
ax.set_ylabel('latitude [Deg]')
ax.set_zlabel('Altitude [Km]')

plt.show()

关键改动说明

  • 新增ax.plot()函数连接所有坐标点,形成连续轨迹,解决点间跳跃感问题
  • scatter函数移除c=distance和cmap参数,指定color='black'实现单一黑色点
  • 删除颜色条相关代码,因不再需要用颜色映射表示distance
  • 可选调整s参数(点大小),让黑色散点在轨迹上更醒目

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 01:58:26