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

问题描述 投票:2回答:1

我希望一个值超过特定阈值的散点图具有另一种颜色,然后是阈值“内部”的颜色。

这是我到目前为止写的:

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

和主题的其他几个变化。但是我被卡住了。请帮助,非常感谢你的时间。

最好的祝愿

python scatter-plot
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.