我正在尝试使用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))
也许有一些东西需要了解才能找到解决方案,但我无法理解
答案 0 :(得分:0)
c
可以是一个二维数组,其中的行是RGB或RGBA,但是,包括单行的情况,为所有点指定相同的颜色。
因此,赋予c
的数组必须是1D数组或RGB或RGBA值的2D数组。它不能是任意的二维数组。
因此你需要展平你的阵列,
col = np.where(zv<0.5,'b','r').flatten()
plt.scatter(xv,yv,c=col)