如何按X值区间为Matplotlib散点图的点设置颜色?
Matplotlib按X值为散点图点设置颜色的解决方法
问题根源:
plt.plot()的c参数不支持按列表为每个点单独分配颜色,传入列表只会取第一个颜色应用到所有点。要实现按X区间设色,推荐用散点图专用的plt.scatter(),或者逐个绘制点。方法一:使用
plt.scatter()(高效推荐)
先根据X值生成对应颜色的列表,再传递给c参数:import matplotlib.pyplot as plt import numpy as np # 示例数据 x_final = np.random.uniform(0, 10, 50) y_final = np.random.uniform(0, 10, 50) # 遍历生成颜色列表 colors = [] for x in x_final: if 0 <= x <= 5: colors.append('r') elif 5 < x <= 10: colors.append('g') # 可添加更多区间的颜色规则 plt.scatter(x_final, y_final, c=colors) plt.show()也可以用numpy向量化操作简化代码:
# 用np.where嵌套实现多区间判断,最后一个参数是默认颜色 colors = np.where((x_final >= 0) & (x_final <= 5), 'r', np.where((x_final > 5) & (x_final <= 10), 'g', 'b')) plt.scatter(x_final, y_final, c=colors) plt.show()方法二:用
plt.plot()逐个绘制点(适合小数据集)
遍历每个点,根据X值指定颜色绘制:for x, y in zip(x_final, y_final): if 0 <= x <= 5: plt.plot(x, y, 'ro') elif 5 < x <= 10: plt.plot(x, y, 'go') plt.show()
内容的提问来源于stack exchange,提问作者just man
相关产品推荐
相关产品推荐

