Рассеяние текстовых сообщений - PullRequest
1 голос
/ 24 января 2020

Я пытаюсь написать имя каждого игрока на графике. Я создал функцию ниже для печати точечного графика.

def eficiencia_chart(datos):
    graph=sns.scatterplot('Eficiencia Defensiva','Eficiencia Ofensiva', data=datos, hue='Position')
    plt.xlim(roundup(max(datos['Eficiencia Defensiva'])),rounddown(min(datos['Eficiencia Defensiva'])))
    plt.ylim(rounddown(min(datos['Eficiencia Ofensiva'])),roundup(max(datos['Eficiencia Ofensiva'])))
    for line in range(0,datos.shape[0]):
        graph.text(datos['Eficiencia Defensiva'][line]+0.2, datos['Eficiencia Ofensiva'][line], datos['Nombre'][line], size='medium')
        print(line)
    return graph

Но когда я выполняю его, печатается только одно имя и возвращает сообщение: KeyError: 1

enter image description here

Кстати, я хотел бы показать пи c с лицом игрока, если это возможно, вместо очков. Может кто-нибудь пролить свет на это?

1 Ответ

1 голос
/ 24 января 2020

Вам нужно сделать

graph.text(datos['Eficiencia Defensiva'].values[line]+0.2, datos['Eficiencia Ofensiva'].values[line], datos['Nombre'].values[line], size='medium')

вместо

graph.text(datos['Eficiencia Defensiva'][line]+0.2, datos['Eficiencia Ofensiva'][line], datos['Nombre'][line], size='medium')

Поскольку df['key'] дает вам серию, к которой не обязательно могут быть получены целочисленные индексы, но df['key'].values с другой стороны, дает numpy массив значений, к которым, конечно, можно получить доступ с помощью целочисленных индексов.

Если это не сработает, это, вероятно, означает, что форма datos - это не то, что вы ожидайте, что это так, и вы должны убедиться, что datos['Eficiencia Ofensiva'].values.shape[0] == datos.shape [0] `.

...