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

时间:2019-05-04 21:53:48

标签: python arrays numpy matplotlib scatter-plot

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,...)分别使用颜色

期待您的帮助。

1 个答案:

答案 0 :(得分:0)

您不需要熊猫进行绘图,只需使用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()