如何使用 3 列 numpy 数组(gpname、x、y)中的组创建 2D 散点图?

How to create a 2D scatterplot with groups from 3 columns numpy array (gpname, x,y)?

Python 2.7 需要您帮助从 3 维的 Numpy 数组创建 2D 散点图,其中 Col0 用于组标记,Col 1 和 2 用于坐标 (X, Y)。

Numpy 数组如下所示

array([['A', '4.83186388889', '2.34534666667'],
   ['A', '4.87818611111', '2.80832888889'],
   ['A', '4.82518611111', '2.33834222222'],
   ['B', '4.53763888889', '-11.88424'],
   ['B', '4.503125', '-11.9406266667'],
   ['B', '4.45975555556', '-11.9688044444'],
   ['C', '6.12376666667', '-9.61480888889'],
   ['C', '6.20991666667', '-9.66523111111'],
   ['C', '6.12281388889', '-9.61702222222'],
   ['D', '6.46020833333', '-11.9756488889'],
   ['D', '6.43584166667', '-11.8586622222'],
   ['D', '6.43401111111', '3.88036888889'],
   ....
   dtype='|S21')

字典不能使用,因为它存储唯一键(组),我不知道如何将它转换成具有适当格式的 Pandas DataFrame。

之前像下面这样尝试过,尽管它打印正常,但它不适用于图表。

dataset = pd.DataFrame(**array**, columns = ['Description','X','Y'])
dataset[['X','Y']] = dataset[['X','Y']].apply(pd.to_numeric)

我想为我的所有组标签(A、B、C、...)创建一个二维散点图 - 多组坐标 (x,y) - 每组单独的颜色(A、B、C、...)

期待您的帮助。

绘图不需要 pandas,只需要 matplotlib。您可以遍历数组并将每个 XY 坐标传递给 plt.scatter。您甚至可以使用结构(如字典)为每个组定义特定颜色:

import matplotlib.pyplot as plt

colors = {'A': 'red', 
          'B': 'blue',
          'C': 'green',
          'D': 'black'}    
for group, x, y in array:
    plt.scatter(float(x), float(y), color=colors[group])
plt.show()

编辑:改用它以便为每个组动态创建随机颜色,无论有多少:

from random import random
import matplotlib.pyplot as plt

colors = {}    
for group, x, y in array:
    plt.scatter(float(x), float(y), color=colors.setdefault(group, (random(), random(), random())))
plt.show()