我正在绘制一个图形,其中我的x变量是“ Mg”,而我的y变量是“ Si”。我有第三个变量称为“二进制”。如果二进制等于0或1,如何分别将绘制的点涂成红色或黑色?
我需要使用功能plt.scatter和colourbar()。我已经读过关于colourbar的文章,但它似乎会产生连续的颜色。我尝试使用plt.colors.from_levels_and_colors代替,但我不确定如何正确使用它。
levels = [0,1]
colors = ['r','b']
cmap, norm = plt.colors.from_levels_and_colors(levels, colors)
plt.scatter(data_train['Mg'], data_train['Si'], c = data_train['binary'])
plt.show()
此外,将来,除了在本论坛中问这样的问题外,我该怎么做才能自己解决问题?我尝试先在线阅读文档,但是经常很难理解。
答案 0 :(得分:4)
np.where
使对二进制值的编码变得容易。
np.where([1, 0, 0, 1], 'yes', 'no')
# array(['yes', 'no', 'no', 'yes'], dtype='<U3')
colors = np.where(data_train['binary'], 'black', 'red')
plt.scatter(data_train['Mg'], data_train['Si'], c=colors)
答案 1 :(得分:0)
如果您正在使用多种“定量”颜色而不是颜色图,则可能应该将c
从二进制格式更改为mpl-friedly格式。即
point_colors = [colors[binary] for binary in data_train['binary']]
plt.scatter(data_train['Mg'], data_train['Si'], c=point_colors)