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,...)分别使用颜色
期待您的帮助。
答案 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()