Matplotlib з'єднує точки розсіювання з лінією - Python


102

У мене є два списки, дати та значення. Я хочу побудувати їх за допомогою matplotlib. Далі створюється графік розкидання моїх даних.

import matplotlib.pyplot as plt

plt.scatter(dates,values)
plt.show()

plt.plot(dates, values) створює лінійний графік.

Але те, що я дуже хочу, - це розсіювач, де точки з'єднані лінією.

Схожий на R:

plot(dates, values)
lines(dates, value, type="l")

, що дає мені розсип точок, накладених лінією, що з'єднує точки.

Як це зробити в python?


5
Дзвонити show()після дзвінка як scatter()і plot()спочатку?

Відповіді:


136

Я думаю, що @Evert має правильну відповідь:

plt.scatter(dates,values)
plt.plot(dates, values)
plt.show()

Що майже все одно

plt.plot(dates, values, '-o')
plt.show()

або будь-який стиль, який ви віддаєте перевагу.


3
"linestyle" - це хороший підказник пошуку ключових слів для проходження крізь (гіномічні) документи matplotlib.
Reb.Cabin

2
@aaronsnoswell Розмір і колір мають сенс лише для очок, які ви все ще можете скласти scatter, як у моєму першому прикладі. Питання нічого не говорить про різну товщину чи колір лінії, тому я думаю, що ваша критика насправді трохи несправедлива.
Hannes Ovrén

28

Для червоних ліній точки

plt.plot(dates, values, '.r-') 

або для x маркерів та синіх ліній

plt.plot(dates, values, 'xb-')

Схоже, у вас, Еверт і kigurai все в порядку. Перед тим, як викликати show (), ви можете зателефонувати як splitter (), так і plot (). Або просто зателефонуйте сюжету () з атрибутами лінії та точки, як описано Стівом Барнсом. Дякую
brno792

14

На додаток до того, що передбачено в інших відповідях, ключове слово "zorder" дозволяє визначати порядок, в якому різні об'єкти зображуються вертикально. Наприклад:

plt.plot(x,y,zorder=1) 
plt.scatter(x,y,zorder=2)

зображує символи розкидання вгорі рядка, в той час як

plt.plot(x,y,zorder=2)
plt.scatter(x,y,zorder=1)

накреслить лінію над символами розкидання.

Дивіться, наприклад, демонстрацію zorder

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.