我想要一个值超过特定阈值的散点图,使其具有另一种颜色,然后是“在阈值内”的颜色。
这是我到目前为止所写的内容:
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
以及该主题的其他几个变体。但是我被卡住了。请帮助,非常感谢您的时间。
祝福
答案 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。