如何在Python中绘制以x/y/z为空间轴、颜色为第四维的4D图?
你可以用matplotlib的3D绘图模块实现需求,第四维的数值c会直接作为颜色映射的输入,完整实现步骤如下:
1. 前置依赖安装
如果还没安装对应的依赖库,先执行安装命令:
pip install numpy matplotlib
2. 完整实现代码
import numpy as np import matplotlib.pyplot as plt from matplotlib import cm # 替换为你自己的完整数组数据即可 x = np.array([ -0.256000000000000, -0.173400000000001, -0.108800000000002, -0.0578000000000003, -0.0194000000000010 # 补充剩余71个数值 ]) y = np.array([ 0.120020800000000, 0.117440400000000, 0.118825300000000, 0.121856900000000, 0.119601200000000 # 补充剩余71个数值 ]) z = np.array([ 0.256010000000000, 0.316988000000000, 0.412030000000000, 0.516346000000000, 0.626786000000000 # 补充剩余71个数值 ]) c = np.array([ 35.4849000000000, 35.8240000000000, 35.8697000000000, 35.3643000000000, 34.6013000000000 # 补充剩余71个数值 ]) # 创建3D画布 fig = plt.figure(figsize=(10,7)) ax = fig.add_subplot(projection='3d') # 绘制4D散点图,c参数传入第四维数组,cmap指定颜色映射规则 scatter = ax.scatter(x, y, z, c=c, cmap=cm.viridis, s=50) # 设置坐标轴标签 ax.set_xlabel('X轴') ax.set_ylabel('Y轴') ax.set_zlabel('Z轴') # 添加颜色条标注第四维的数值范围 plt.colorbar(scatter, label='第四维数值') plt.show()
3. 可调参数说明
- 更换颜色映射:把
cm.viridis替换为其他内置方案即可,常用的还有cm.plasma、cm.coolwarm、cm.jet等 - 修改散点大小:调整
s参数的数值即可 - 你的数据只有76个离散点,用散点图展示更合适,如果需要绘制平滑曲面,需要先对x、y做网格化处理,再插值得到网格对应的z和c的数值
内容的提问来源于stack exchange,提问作者ahmed
相关产品推荐
相关产品推荐

