Python散射阈值函数不起作用



我想要一个值超过特定阈值的散点图具有另一种颜色,然后在阈值内的散点图

到目前为止我写的是:

import numpy as np
import numpy.random as rnd
import matplotlib.pyplot as plt
n  = 100
x  = rnd.uniform(low  = -1,  high = 1, size = n)
y  = rnd.uniform(low  = -1,  high = 1, size = n)
a  = x**2 + y**2
c  = np.zeros(n) 
for i in range(n):
    if a[i] <= 1:
        c[i]  = 0
    else:
        c[i]  = 1
plt.scatter(x,y, color = c)
plt.show() 

的输出是一个完全黑色的散点图。

c = array([ 0.,  0.,  0.,  1.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
    1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
    0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  1.,  1.,
    0.,  0.,  0.,  0.,  0.,  1.,  1.,  1.,  1.,  0.,  0.,  0.,  0.,
    0.,  1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
    0.,  0.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,
    1.,  0.,  0.,  0.,  1.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,  0.,
    0.,  0.,  1.,  1.,  0.,  0.,  1.,  1.,  1.])

我试了如下:

for i in range(n):
if a[i] <= 1:
    c[i]  = "r"
else:
    c[i]  = "g"
ValueError: could not convert string to float: r

和主题的其他几个变体。然而,我被困住了。请帮忙,非常感谢你的时间。

祝福

c定义为整数,如下所示:

c  = np.zeros(n)

但是在第二个代码片段中,您试图将c设置为字符串。

c[i]  = "r"

为您的字符串数组选择一个新名称:

cs = []
for i in range(n):
    if a[i] <= 1:
        cs.append("r")
    else:
        cs.append("g")

如果scatter抱怨c不是来自numpy,你可以设置一个numpy字符:numpy.chararray.