我有一个群集数据集。输出看起来像这样: -
1 [1,2]
2 [1,6]
1 [2,4]
其中1,2 ...是簇ID和[1,2] ..等等是点。所以我想在两个轴上绘制点x坐标和y坐标,并且对应于图中描绘集群id作为标签的点,对于不同的id,点的颜色应该是不同的。我该怎么做呢?
由于
答案 0 :(得分:1)
如果一个轴是簇ID,我不知道如何将两个 x和y坐标放到另一个轴上。所以我在x和y轴上绘制了x,y并使用了簇ID作为标签;我猜你可以交换哪个轴进入哪个轴:
import matplotlib.pyplot as plt
from ast import literal_eval
data = """1 [1,2]
2 [1,6]
1 [2,4]"""
def cluster_color(clusternum):
'''Some kind of map of cluster ID to a color'''
if clusternum == 1:
return [(1, 0,0)]
if clusternum == 2:
return [(0, 0, 1)]
else:
return [(0, 1,0)]
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
def datalines(pt):
'''Pick the coordinates and label out of this text format'''
label, xy = pt.split(' ')
xy = literal_eval(xy)
assert(len(xy) == 2)
return xy[0], xy[1], label
for pt in data.splitlines():
if len(pt) > 0:
x, y, cluster = datalines(pt)
ax.scatter(x, y, c= cluster_color(float(cluster)))
ax.text(x + .01, y + .01, cluster)
fig.show()
N.b。:如果您有大量数据,请不要分别为每个点拨打scatter
;将x,y,群集附加到三个单独的列表和scatter
列表。