Matplotlib соединяет точки диаграммы рассеяния с линией - Python


104

У меня есть два списка, даты и значения. Я хочу построить их с помощью 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()сначала?

Ответы:


138

Думаю, у @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, как в моем первом примере. В этом вопросе ничего не говорится о различной толщине или цвете линий, поэтому я думаю, что ваша критика действительно немного несправедлива.
Ханнес Оврен

28

Для красных линий и точек

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

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

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

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

15

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