求助: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
相关产品推荐
相关产品推荐

