我使用matplotlib
生成几个点的散点图。每个点都应该用标签标注。我试着把标签随机放在点坐标周围的一个圆上。然而,我并没有得到令人满意的结果。一个主要的问题是y轴需要对数缩放
放置标签的简单方法是什么?这样标签就不会重叠,并且从视觉上看与它们的点保持恒定的距离
import random
import math
algos = [plm, plm2, plp, plmr2, plmr, clutbb, rg, cggc, cggci, epp_plm, louvain, epp_plm2, epp_plmr2]
labels = ["PLM(o)", "PLM", "PLP", "PLMR", "PLMR(o)", "CLU_TBB", "RG", "CGGC", "CGGCi", "EPP(o)", "Louvain", "EPP_PLM", "EPP_PLMR"]
scores = [paretoScore(algo, plm2) for algo in algos]
def labelcoord(coord, r, s):
(x, y) = coord
phi = random.uniform(0, 2 * math.pi)
return (x + r * math.cos(phi), y + s * math.sin(phi))
scatter(*(zip(*scores)), color="Green")
xlabel("modularity score")
yscale("symlog")
ylabel("time score")
for (label, score) in zip(labels, scores):
annotate(label, xy=score, xytext=labelcoord(score, 0.02, 10),
fontsize=12,
arrowprops = dict(arrowstyle = '->', color="lightgray", connectionstyle = 'arc3,rad=0'))
目前没有回答
相关问题 更多 >
编程相关推荐