在第一个和最后一个观察值上添加标签号

时间:2019-03-27 09:56:58

标签: python pandas matplotlib seaborn

我创建了以下图形。我想为图中创建的每条线注释第一个值和最后一个值。会在每行之前和结尾处为每行注释该值

如何?

data = {'Time':['1', '2', '1', '2', '1', '2', '1', '2', '1', '2', '1', '2', '1', '2' , '1', '2'], 'Country':['Italy', 'Italy', 'Italy', 'Italy', 'Italy', 'Italy', 'Italy', 'Italy',  'Russia', 'Russia',  'Russia', 'Russia' ,  'Russia', 'Russia',  'Russia', 'Russia'], 'Score':[20, 21, 14, 15, 19, 18, 5, 9, 5, 8, 3, 3, 5, 1, 3, 8]} 
df = pd.DataFrame(data) 
sns.lineplot(x="Time", y="Score", hue="Country",  data=df)

1 个答案:

答案 0 :(得分:0)

如果没有确切的详细信息,可以使用sns.lineplot返回的axis对象,然后使用axis对象的text方法。

以下,我计算每个国家在“时间” = 1时的平均值“分数”,然后将其作为文本添加到图表中。您可以根据需要对此进行自定义:

ax = sns.lineplot(x="Time", y="Score", hue="Country",  data=df)

means = df.groupby(['Country','Time']).mean()

times = ['1', '2']
x_positions = [0.02, 0.9]

for country in df['Country'].unique():
    for time, xpos in zip(times, x_positions):
        mean = means.loc[(country, time)].values
        ax.text(xpos, mean-1.1, mean[0])

example_text_to_axis