【问题标题】:Scatterplot problem in changing points color with if function用if函数改变点颜色的散点图问题
【发布时间】:2019-08-26 15:20:08
【问题描述】:

我是 python 新手,我正在尝试用不同颜色绘制一些点。点的颜色应该由点本身的值来决定

数据集是一个 3 维矩阵,前两个维度用于绘图,第三个维度是分类。根据分类,点应具有不同的颜色。

我正在使用带有 if 的 for 循环。 不知何故,它的行为就像所有分类值都是 -1,用该颜色打印所有点,尽管打印值正确。

import numpy as np
import math
import matplotlib.pyplot as plt

p = 10

datacord = np.array([[1,1,1],[1,2,1],[2,2,1],[1,3,1],[2,3,1],[5,5,-1],[5,6,-1],[6,5,-1],[7,6,-1],[7,7,-1]])
xaxis = datacord[:,0]
yaxis = datacord[:,1]
dataclass = datacord[:,2]

for f in range (p):   
    if dataclass[f] > 0:
        plt.scatter(xaxis, yaxis, color="blue")
        print(dataclass[f])
    else:
        plt.scatter(xaxis, yaxis, color="red")
        print(dataclass[f])

plt.axis([-1, 10, -1, 10])
plt.show()

我想了解为什么颜色没有变化,但都是一样的。 我希望前 5 个点用蓝色着色,而其他 5 个点用红色着色

提前谢谢你。

【问题讨论】:

    标签: python scatter-plot


    【解决方案1】:

    你基本上把10个散点放在一起,因为最后一个是红色的,你只能看到红色的。

    如果您只想在每次迭代中绘制一个点:

    for f in range (p):   
        if dataclass[f] > 0:
            plt.scatter(xaxis[f], yaxis[f], color="blue")
            print(dataclass[f])
        else:
            plt.scatter(xaxis[f], yaxis[f], color="red")
            print(dataclass[f])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-30
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-19
      • 2018-08-23
      • 1970-01-01
      相关资源
      最近更新 更多