Как аннотировать выбросы в точечной диаграмме в Python? - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь комментировать имя исполнителя только определенных экземпляров в точечной диаграмме (например, где «Основной компонент 1»> = 1,5 или где «Главный компонент 2»> = 1,5).

ГоловаDataFrame, который имеет форму (500, 4).

print(pca_df2.head())

       genre      artist      Principal Component 1  Principal Component 2 
1         a          band1             -0.148578               0.138509
2         b          band2             -0.484604               0.290153
3         b          band3             -0.576619              -0.359020
4         a          band4             -0.317572              -0.221687
5         a          band5             -0.536065              -0.404252

Мой текущий рабочий код графика разброса, который отображает цвет для всех экземпляров по их жанру, выглядит следующим образом:

labels = ['a', 'b', 'c', 'd', 'e']
colors = ['k', 'r', 'y', 'm', 'g']

fig = plt.figure(figsize = (8,8))
ax = fig.add_subplot(1,1,1)

for label, color in zip(labels, colors):
indicesToKeep = pca_df2['genre'] == label
ax.scatter(pca_df2.loc[indicesToKeep, 'Principal component 1'],
           pca_df2.loc[indicesToKeep, 'Principal component 2'],
           c = color, s = 20, alpha = 0.8)
ax.legend(labels)
ax.grid()
plt.show()

1 Ответ

0 голосов
/ 24 сентября 2019

Решается простой итерацией по фрейму данных

for index, row in pca_df2.iterrows():
artist = row['artist']
pca1 = row['Principal component 1']
pca2 = row['Principal component 2']
if pca1 >= 1.5 or pca2 >= 1.5:
    plt.text(x = pca1, y = pca2+0.05, s=artist, fontsize=9)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...