【问题标题】:Matplotlib connect scatterplot points with line - PythonMatplotlib用线连接散点图点 - Python
【发布时间】:2013-12-06 11:16:06
【问题描述】:

我有两个列表,日期和值。我想使用 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 中做到这一点?

【问题讨论】:

  • 先调用scatter()plot() 之后再调用show()

标签: python matplotlib


【解决方案1】:

对于红线一个点

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

或用于 x 标记和蓝线

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

【讨论】:

  • 看来你、Evert 和 kigurai 都没事。您可以在调用 show() 之前同时调用 scatter() 和 plot()。或者像史蒂夫·巴恩斯(Steve Barnes)所描述的那样,使用线和点属性调用 plot() 。谢谢
【解决方案2】:

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

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

这几乎是一样的

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

您可以将-o 替换为另一个合适的格式字符串,如documentation 中所述。 您还可以使用 linestyle=marker= 关键字参数来拆分线条和标记样式的选择。

【讨论】:

  • 'linestyle' 是一个很好的关键字搜索线索,让我可以通过(gynormous)matplotlib 文档。
  • @aaronsnoswell 大小和颜色只对点有意义,您仍然可以通过scatter 绘制,根据我的第一个示例。这个问题并没有说明线条粗细或颜色的变化,所以我认为你的批评有点不公平,真的。
  • 您想要的关键字参数不是linestyle,而是marker。我会添加一个答案,因为不知何故,这个问题还没有出现。
  • 感谢@eric 的更正。我已经更新了描述格式字符串、标记和线条样式的答案。
  • @HannesOvrén 不用担心,它不像第一条评论那样针对您。 :)
【解决方案3】:

除了其他答案中提供的内容外,关键字“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

【讨论】:

    【解决方案4】:

    他们的关键字参数是marker,您可以使用markersize 设置标记的大小。要生成顶部带有散点符号的线条:

    plt.plot(x, y, marker = '.', markersize = 10)
    

    要绘制填充点,您可以使用标记'.''o'(小写字母哦)。有关所有标记的列表,请参阅:
    https://matplotlib.org/stable/api/markers_api.html

    【讨论】:

      猜你喜欢
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多