Я пытаюсь составить точечный график и аннотировать точки данных различными номерами из списка. Так, например, я хочу построить y
против x
и аннотировать с соответствующими числами из n
.
y = [2.56422, 3.77284, 3.52623, 3.51468, 3.02199]
z = [0.15, 0.3, 0.45, 0.6, 0.75]
n = [58, 651, 393, 203, 123]
ax = fig.add_subplot(111)
ax1.scatter(z, y, fmt='o')
Любые идеи?
python
matplotlib
text
scatter-plot
annotate
Labibah
источник
источник
Ответы:
Я не знаю ни одного метода построения графиков, который бы использовал массивы или списки, но вы могли бы использовать его для
annotate()
перебора значений вn
.Существует множество вариантов форматирования
annotate()
, см. Веб-сайт matplotlib:источник
regplot
без особых проблем .KeyError
- так что я предполагаю, чтоdict()
объект ожидается? Есть ли другой способ маркировать данные , используяenumerate
,annotate
и кадр панды данных?for row in df.iterrows():
, а затем получить доступ к значениямrow['text'], row['x-coord']
и т. Д. Если вы разместите отдельный вопрос, я посмотрю на него.В версии более ранней, чем matplotlib 2.0,
ax.scatter
нет необходимости печатать текст без маркеров. В версии 2.0 вам нужноax.scatter
будет установить правильный диапазон и маркеры для текста.И в этой ссылке вы можете найти пример в 3d.
источник
plt.figure(figsize=(20,10))
не работают должным образом, потому что вызов этого кода на самом деле не меняет размер изображения. Ждем вашей помощи. Спасибо!В случае, если кто-то пытается применить вышеуказанные решения к .scatter () вместо .subplot (),
Я попытался запустить следующий код
Но натолкнулся на ошибки, в которых говорилось, что «невозможно распаковать не повторяемый объект PathCollection», а ошибка указывает на кодовую строку fig, ax = plt.scatter (z, y)
Я в конце концов решил ошибку, используя следующий код
Я не ожидал, что будет разница между .scatter () и .subplot (), я должен был знать лучше.
источник
Вы также можете использовать
pyplot.text
(см. Здесь ).источник
Python 3.6+:
источник
Как один вкладыш, использующий списки и numpy:
[ax.annotate(x[0], (x[1], x[2])) for x in np.array([n,z,y]).T]
установка так же, как ответ Рутгера.
источник
Я хотел бы добавить, что вы можете даже использовать стрелки / текстовые поля для аннотирования меток. Вот что я имею в виду:
Который будет генерировать следующий график:
источник