如何让3D散点图根据Values数组值调整点的颜色
给3D散点图按Values绝对值配置颜色的实现方法
核心实现思路
利用matplotlib的scatter()函数的c参数,将点的颜色与Values数组的绝对值绑定,再通过指定反转的红-蓝渐变配色方案,实现“绝对值越高颜色越红,越低越蓝”的效果。
完整代码示例
import numpy as np from matplotlib import pyplot as plt # 示例numpy数组数据 X = np.array([20,30,50,60]) Y = np.array([25,35,55,65]) Z = np.array([5,6,7,8]) Values = np.array([-8,5,0.8,-1.2]) # 计算Values的绝对值,作为颜色映射的依据 abs_values = np.abs(Values) fig = plt.figure(figsize=(30, 30)) ax = fig.add_subplot(projection='3d') # 绑定颜色数据与配色方案,s参数可选,用于调整点的大小 scatter = ax.scatter(X, Y, Z, c=abs_values, cmap='RdBu_r', s=100) # 添加颜色条,标注颜色对应的数值含义 plt.colorbar(scatter, ax=ax, label='Values的绝对值') plt.show()
关键参数说明
c=abs_values:将每个点的颜色与Values的绝对值关联,数值越大,颜色越偏向配色方案的红色端。cmap='RdBu_r':选择反转的红-蓝渐变配色(默认RdBu是蓝→红渐变,加_r后缀反转后变为红→蓝),完美匹配需求。如果偏好其他渐变风格,可替换为'coolwarm_r'等类似配色。plt.colorbar():添加颜色条,让观看者能直观对应颜色与数值的关系,提升图表可读性。
内容的提问来源于stack exchange,提问作者A.k.
相关产品推荐
相关产品推荐

