Matplotlib散点图颜色

时间:2017-11-11 19:28:59

标签: python matplotlib

我正在尝试使用meshgrid输入数据在散点图上设置颜色。 我使用的代码如下:

xmesh = np.linspace(-5, 5, 30)
ymesh = np.linspace(-5, 5, 30)
xv, yv = np.meshgrid(xmesh, ymesh)
zv = a*xv+b*yv+c #a,b,c are some scalar constants
col = np.where(zv<0.5,'b','r')
plt.scatter(xv,yv,c=col)
plt.show()

执行此代码会返回以下错误:

could not convert string to float: 'b'

如果我将颜色贴图变为浮动值:

col = np.where(zv<0.5,0.1,0.2) 

这没有任何问题。知道为什么吗?

当查看抛出错误的代码部分时,我看到以下备注:

# tuple color.
# Python 2.7 / numpy 1.6 apparently require this to return builtin floats,
# not numpy floats.
try:
c = tuple(map(float, c))

也许有一些东西需要了解才能找到解决方案,但我无法理解

1 个答案:

答案 0 :(得分:0)

来自scatter documentation

  

c可以是一个二维数组,其中的行是RGB或RGBA,但是,包括单行的情况,为所有点指定相同的颜色。

因此,赋予c的数组必须是1D数组或RGB或RGBA值的2D数组。它不能是任意的二维数组。

因此你需要展平你的阵列,

col = np.where(zv<0.5,'b','r').flatten()
plt.scatter(xv,yv,c=col)