Использование matplotlib для печати текста - PullRequest
0 голосов
/ 25 сентября 2018

Я пытаюсь поместить текст в график, но по какой-то причине я не могу сделать это, используя plt.text.Я получаю

TypeError: can only concatenate list ("not float") to list

Я действительно не знаю, что изменить, чтобы заставить это работать.

x = [3, 1, 4, 5, 1]
y = [5, 4, 4, 3, 7]

fig=plt.figure(1)
ax = fig.add_subplot(1, 1, 1)
plt.xlim(0.5, 7)
plt.ylim(0, 7.5)

ax.spines['left'].set_position('center')
ax.spines['bottom'].set_position('center')

ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')

ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')

plt.scatter(x, y, marker="x", color="red")

Names=['name1', 'name2', 'name3', 'name4', 'name4']

plt.text(x + 0.1, y + 0.1, Names, fontsize=9)

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

В вашем коде есть две ошибки.

Поднимается то, что вы пытаетесь добавить скаляр в список Python: x + 0.1 и y + 0.1.+ определяется как конкатенация, о которой говорит вам ошибка.Потенциально это можно исправить, преобразовав x и y в массивы numpy заранее.Для массивов + определяется как поэлементное сложение, как вы и ожидали.Однако это не решит вашу вторую проблему.

В документации для pyplot.text прямо указано, что входы x и y являются скалярами: вы можете построить только одну строкуза звонок.Это означает, что вам нужен цикл:

for x_, y_, name in zip(x, y, Names):
    plt.text(x_ + 0.1, y_ + 0.1, name, fontsize=9)

Пожалуйста, внимательно прочитайте свои ошибки и напишите все в следующий раз.

0 голосов
/ 25 сентября 2018

Вы пытаетесь использовать plt.text в векторизации.Это не сработает.Вы также добавляли 0.1 (число с плавающей точкой) к x (список) и, следовательно, очевидную ошибку.Вы должны зациклить ваше Names и использовать соответствующие значения x и y и добавлять text одно имя за раз.Вы можете сделать это, используя enumerate следующим образом

Names=['name1', 'name2','name3','name4','name4']
for i, name in enumerate(Names):
    plt.text(x[i]+0.1, y[i]+0.1, name, fontsize=9)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...