散点图,python:当另一个变量然后绘制的变量为 0 或 1 时如何使用不同的颜色

Scatterplot, python: How to use different color when another variable then the plotted variable is 0 or 1

(matplotlib, python 2.7)

正在尝试绘制 x 和 y 的散点图:

x = [0, 1, 2, 3, 4]

y = [1, 2, 3, 4, 5]

散点图的代码当然是:

plt.scatter(x, y)

但是,鉴于下面的 z 列表,我希望 y 的颜色在 z = 0 时为黑色,在 z = 1 时为橙色。

z = [0, 1, 0, 1, 0]

我该怎么办?尝试了 google 和其他 Whosebug 帖子,但到目前为止没有成功..

谢谢!

看来您只需要使用 c keyword argument:

指定颜色
plt.scatter(x, y, c=['k' if zz == 0 else 'orange' for zz in z])

当然,您可以使用将颜色值转换为 matplotlib 颜色代码的映射来获得更高级的效果:

color_map = {
    0: 'k',
    1: 'orange
}
plt.scatter(x, y, c=[color_map.get(v, 'cyan') for v in z])

这里的优势很明显 -- 向绘图添加更多颜色要容易得多。