在Gnuplot中绘制图形或使用matplotlib

时间:2014-05-10 05:17:45

标签: python matplotlib gnuplot

我有一个群集数据集。输出看起来像这样: -

  

1 [1,2]

     

2 [1,6]

     

1 [2,4]

其中1,2 ...是簇ID和[1,2] ..等等是点。所以我想在两个轴上绘制点x坐标和y坐标,并且对应于图中描绘集群id作为标签的点,对于不同的id,点的颜色应该是不同的。我该怎么做呢?

由于

1 个答案:

答案 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列表。