2013-11-21 2 views
52

У меня есть два списка, даты и значения. Я хочу их построить, используя matplotlib. Ниже приводится график рассеяния моих данных.Matplotlib connect pointsplot point with line - Python

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?

+2

Вызов 'шоу()' после вызова как 'разброс()' и 'участок()' первый? – Evert

ответ

77

Я думаю @Evert имеет правильный ответ:

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

что довольно много то же, что и

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

или что-то еще linestyle вы предпочитаете.

+1

«linestyle» был хорошим ключом поиска по ключевому слову для меня, чтобы пройти через (gynormous) документы matplotlib. –

18

для красных линий Н. точек

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

или для маркеров х и синих линий

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

Похоже, вы, Эверт и кигурай, все в порядке. Вы можете вызвать split() и plot() перед вызовом show(). Или просто вызовите plot() с атрибутами линии и точки, описанными Стивом Барнсом. Спасибо – brno792

7

В дополнение к тому, что указано в других ответах, ключевое слово «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 demo