Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用对数轴标注散点图中的点_Python_Matplotlib_Plot - Fatal编程技术网

Python 用对数轴标注散点图中的点

Python 用对数轴标注散点图中的点,python,matplotlib,plot,Python,Matplotlib,Plot,我使用matplotlib生成几个点的散点图。应使用标签对每个点进行注释。我尝试将标签随机放置在点坐标周围的圆圈上。然而,我并没有得到令人满意的结果。一个主要问题是y轴需要按对数缩放 放置标签的简单方法是什么,这样它们就不会重叠,并且在视觉上与它们的点保持恒定的距离 import random import math algos = [plm, plm2, plp, plmr2, plmr, clutbb, rg, cggc, cggci, epp_plm, louvain, epp_plm2

我使用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'))