这是我用pyplot生成的一个绘图,并且(试图)使用adjustText库(我也在这里找到)调整文本。
如您所见,它在0 < x < 0.1
的部分变得非常拥挤。我在想0.8 < y < 1.0
中还有足够的空间,这样它们就可以很好地匹配和标记这些点了。
我的尝试是:
plt.plot(df.fpr,df.tpr,marker='.',ls='-')
texts = [plt.text(df.fpr[i],df.tpr[i], str(df.thr1[i])) for i in df.index]
adjust_text(texts,
expand_text=(2,2),
expand_points=(2,2),
expand_objects=(2,2),
force_objects = (2,20),
force_points = (0.1,0.25),
lim=150000,
arrowprops=dict(arrowstyle='-',color='red'),
autoalign='y',
only_move={'points':'y','text':'y'}
)
其中mydf
是pandas数据帧,可以找到here
根据我在文档中的理解,我试图通过使它们更大来改变边界框和y力,以为这样会使标签更上一层楼,但事实似乎并非如此。
我是adjustText的作者,很抱歉我刚刚注意到这个问题。你有这个问题,因为你有很多重叠的文本,y坐标完全相同。通过在标签上沿y方向添加一个微小的随机移动,很容易解决这个问题(你确实需要增加文本的力,否则沿着一维它会非常缓慢地工作),如下所示:
还要注意,我增加了沿y轴的边距,这对角点有很大帮助。结果并不十分完美,将算法限制在一个轴上会使工作更加困难。。。但已经没事了。在
不得不提的是,身材的大小非常重要,我不知道你的身材是什么。在
相关问题 更多 >
编程相关推荐