Python 将布尔值映射到字符串

Python 将布尔值映射到字符串,python,arrays,numpy,matplotlib,Python,Arrays,Numpy,Matplotlib,我正在绘制一个图形,其中x变量是‘Mg’,y变量是‘Si’。我有第三个变量叫做“binary”。如果二进制等于0或1,如何分别将打印点涂成红色或黑色 我需要使用函数plt.scatter和colorbar()。我读过关于色条的书,但它似乎能产生连续的颜色光谱。我尝试过使用plt.colors.from_levels_和_colors,但我不确定如何正确使用它 levels = [0,1] colors = ['r','b'] cmap, norm = plt.colors.from_levels

我正在绘制一个图形,其中x变量是‘Mg’,y变量是‘Si’。我有第三个变量叫做“binary”。如果二进制等于0或1,如何分别将打印点涂成红色或黑色

我需要使用函数plt.scatter和colorbar()。我读过关于色条的书,但它似乎能产生连续的颜色光谱。我尝试过使用plt.colors.from_levels_和_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()

另外,在未来,我可以做什么来解决我自己的问题,而不是在这个论坛上问这样的问题?我试着先在线阅读文档,但经常发现很难理解

np。其中
使二进制值的编码变得容易

np.where([1, 0, 0, 1], 'yes', 'no')
# array(['yes', 'no', 'no', 'yes'], dtype='<U3')

如果您使用的是多种“定量”颜色,而不是colormap,那么您可能应该将
c
从二进制更改为mpl friedly格式。即

point_colors = [colors[binary] for binary in data_train['binary']]
plt.scatter(data_train['Mg'], data_train['Si'], c=point_colors)

谢谢你这么快回复。所以在这种情况下使用颜色条是不合适的吗?@Anya我不这么认为。颜色条用于色调和渐变。您似乎只是想在这里指定两种颜色。@Anya:请看答案,创建一个二元颜色映射
point_colors = [colors[binary] for binary in data_train['binary']]
plt.scatter(data_train['Mg'], data_train['Si'], c=point_colors)