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()第一?

Answers:


136

我认为@Evert有正确的答案:

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

几乎与

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

或您喜欢的任何线型


3
“ linestyle”是我搜索(gymmous)matplotlib文档的最佳关键字搜索线索。
Reb.Cabin's

2
@aaronsnoswell大小和颜色仅对点有意义scatter,根据我的第一个示例,您仍然可以通过进行绘制。这个问题没有说明改变线的粗细或颜色,因此,我认为您的批评确实有点不公平。
HannesOvrén18年

28

红线表示点

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

或用于x标记和蓝线

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

看起来像您,Evert和kigurai都还好。在调用show()之前,可以同时调用scatter()和plot()。或者按照Steve Barnes描述的那样,用line和point属性调用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演示

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.