Matplotlib折线图:使用文本排斥直接标记

Matplotlib折线图:使用文本排斥直接标记,matplotlib,label,jitter,Matplotlib,Label,Jitter,我有一个看起来像这样的数据集(标签分开,从df.复制到剪贴板(index=False)): 我用ax.plot()和df.groupby(“分析”)制作了一个折线图。见下面的代码: fig,ax=plt.subplot() _最后一个列表=[] _最后一个列表=[] _颜色列表=[] 对于名称,df.groupby([“分析”])中的组: ax.绘图(组[“时间点”]、组[“值”]、标记=“o”) _最后一个列表。追加(组[“时间点”]。iat[-1]) _最后一个列表。追加(组[“值”]。ia

我有一个看起来像这样的数据集(标签分开,从
df.复制到剪贴板(index=False)
):

我用
ax.plot()
df.groupby(“分析”)
制作了一个折线图。见下面的代码:

fig,ax=plt.subplot()
_最后一个列表=[]
_最后一个列表=[]
_颜色列表=[]
对于名称,df.groupby([“分析”])中的组:
ax.绘图(组[“时间点”]、组[“值”]、标记=“o”)
_最后一个列表。追加(组[“时间点”]。iat[-1])
_最后一个列表。追加(组[“值”]。iat[-1])
_color\u list.append(plt.gca().lines[-1].get\u color())
对于i,zip格式的文本([0,1,2]、“分析A”、“分析B”、“分析C”]):
text(x=\u last\u x\u list[i]+5,y=\u last\u y\u list[i],s=text,color=\u color\u list[i])
对于[“顶部”、“右侧”]中的sp:
ax.spines[sp]。设置_可见(错误)
这将生成以下图表:

我的问题是,我如何让图表右侧的文本彼此保持距离?对于“分析B”注释(橙色),它实际上不需要移动到任何地方,但是对于“分析A”和“分析C”,我如何使它们抖动

我考虑过内核密度估计(KDE),以了解它的密度,但我不知道如何从那里开始,在拥挤时引入人工抖动

#导入高斯kde
从scipy.stats导入高斯_kde
#获取KDE
kde=高斯分布的kde(_last_y_list)
密度=kde(_last_y_list)
密度
#打印:数组([6.94091548,3.94813567,6.86831037])
请提出建议,谢谢

Sample  Assay   Timepoint   Value
Serum   A   0   0.275
Serum   A   28  0.382
Serum   A   90  0.2652
MBC B   0   0.027
MBC B   10  0.081
MBC B   28  0.065
MBC B   90  0.35
Serum   C   0   0.1
Serum   C   28  0.3
Serum   C   90  0.261