python散点图阈值功能不起作用

时间:2014-05-05 08:53:15

标签: python scatter-plot

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

这是我到目前为止所写的内容:

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

以及该主题的其他几个变体。但是我被卡住了。请帮助,非常感谢您的时间。

祝福

1 个答案:

答案 0 :(得分:2)

您将 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")

如果分散抱怨 c 没有来自numpy,您可以设置一个numpy chararry:numpy.chararray