Matplotlib scatterplot; 颜色作为第三variables的函数

我想要做一个scatterplot(使用matplotlib)其中的点根据第三个variables着色。 我已经非常接近这个:

plt.scatter(w, M, c=p, marker='s') 

其中w和M是数据点,p是我想遮蔽的variables。
不过我想用灰度而不是颜色来做。 谁能帮忙?

没有必要手动设置颜色。 相反,请指定一个灰度色彩表…

 import numpy as np import matplotlib.pyplot as plt # Generate data... x = np.random.random(10) y = np.random.random(10) # Plot... plt.scatter(x, y, c=y, s=500) plt.gray() plt.show() 

在这里输入图像描述

或者,如果您更喜欢更广泛的色彩映射 ,则还可以指定cmap kwarg进行scatter 。 要使用任何这些的反转版本,只需指定它们中的任何一个的“ _r ”版本。 例如gray_r而不是gray 。 有几个不同的灰度gist_yarg映射预先(例如graygist_yargbinary等)。

 import matplotlib.pyplot as plt import numpy as np # Generate data... x = np.random.random(10) y = np.random.random(10) plt.scatter(x, y, c=y, s=500, cmap='gray') plt.show() 

在matplotlib中,灰色可以以0-1之间的数字值的stringforms给出。
例如c = '0.1'

然后,您可以将第三个variables转换为此范围内的值,并使用它来为您的点着色。
在下面的例子中,我用点的y位置作为确定颜色的值:

 from matplotlib import pyplot as plt x = [1, 2, 3, 4, 5, 6, 7, 8, 9] y = [125, 32, 54, 253, 67, 87, 233, 56, 67] color = [str(item/255.) for item in y] plt.scatter(x, y, s=500, c=color) plt.show() 

在这里输入图像描述