如何为Numpy散点图中的指定数据点设置自定义颜色?
给Matplotlib散点图指定单个点自定义颜色的实现方法
问题描述
我想用Numpy生成数据并绘制x、y散点,代码如下:
import numpy as np import matplotlib.pyplot as plt a = np.array([ [5.033,-3.066], [5.454,-3.492], [-1.971,0.384], ],) x, y = a.T plt.scatter(x, y) plt.ylabel('Yv') plt.show()我希望为不同点设置指定颜色,比如前两个点为黑色,第三个点为红色,类似这样的设想(虽然语法不对):
a = np.array([ [5.033,-3.066] and color="black", [5.454,-3.492] and color="black", [-1.971,0.384] and color="red", ],)我了解到colormap相关内容,但不确定是否适用于我的需求,请问该如何实现?
解决方案
其实你完全不用纠结colormap——colormap更适合把连续数值映射成渐变颜色,而你的需求是给特定点指定固定颜色,直接给plt.scatter()的c参数传一个颜色列表就可以,简单又直观。
修改后的完整代码如下:
import numpy as np import matplotlib.pyplot as plt a = np.array([ [5.033,-3.066], [5.454,-3.492], [-1.971,0.384], ]) x, y = a.T # 按数据点顺序定义对应的颜色,和点一一对应 point_colors = ['black', 'black', 'red'] plt.scatter(x, y, c=point_colors) plt.ylabel('Yv') plt.show()
额外说明
c参数接受的颜色列表长度必须和你的数据点数量一致,每个元素可以是:- 预定义的颜色名称(比如
'blue'、'green') - 十六进制颜色码(比如
'#FF0000'对应红色) - RGB/RGBA元组(比如
(0, 0, 0)对应黑色)
- 预定义的颜色名称(比如
- 如果后续你有批量分类的需求(比如某一类点统一用一种颜色),也可以先把分类标签映射成颜色列表,再传入
c参数,这种方式比colormap更可控,完全匹配自定义颜色的需求。
内容的提问来源于stack exchange,提问作者mahmood
相关产品推荐
相关产品推荐

