Во-первых, я буду считать, что ваши данные доступны в CSV-подобном файле. Мое решение включает использование встроенной функции pandas set_option для учета правильного форматирования номера, а затем использование pyplot.text для построения имен в конце каждой строки.
Я не думаю, что это лучшее решение с точки зрения визуализации, но, если я хорошо понимаю, что вы ' ищем, вот оно:
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
sns.set_style('darkgrid')
pd.set_option('display.float_format', lambda x: '%.3f' % x)
dataset_C = pd.read_csv('dataset_C.csv')
dataset_C['YYYY'] = dataset_C['Year'].apply(pd.to_datetime).apply(lambda x: x.year)
fig, ax = plt.subplots(1,1,figsize=(10,6))
sns.lineplot(x='YYYY',y='gdpMillion',hue='Country', data=dataset_C, marker='o',palette='Blues', ax=ax, legend=False)
for country in dataset_C['Country'].unique():
xpos = dataset_C[dataset_C['Country'] == country].YYYY.max() - 0.2
ypos = dataset_C[dataset_C['Country'] == country].gdpMillion.max() + 100000
plt.text(xpos,ypos,country)
ax.set_xlabel('Year')
первое решение
Вместо этого я бы искал что-то вроде:
fig, ax = plt.subplots(1,1,figsize=(10,6))
sns.lineplot(x='YYYY',y='gdpMillion',hue='Country', data=dataset_C, marker='o',palette='deep', ax=ax, legend='full')
ax.set_xlabel('Year')
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
второе решение
Надеюсь, оно вам помогло! С уважением.