【问题标题】:Plotting buy-sell signals on time series data在时间序列数据上绘制买卖信号
【发布时间】:2019-10-29 04:32:36
【问题描述】:

我正在尝试绘制时间序列数据,以便可以在数据本身上显示买卖点。

这是数据的样子:

这是收盘价折线图:

这是买入卖出信号(我现在只打印买入卖出信号,但我会将它们存储到一个新的数据框中):

我不想标记every 数据点,而是标记buy-sell list 中的点。我需要匹配两个数据框中的日期,并为购买添加一个绿色向上箭头,为出售添加一个红色向下箭头。一个示例解决方案:

我该怎么做?

【问题讨论】:

  • 使用 ax.annotate。 matplotlib.org/users/annotations.html 尝试这样做会发生什么?
  • 我对 matplotlib 很陌生。我研究并尝试了markevery 选项,但没有得到我想要的。你能给我一个工作的例子吗?
  • 链接页面上有很多通用示例。对于更具体的内容,请将您的一些代码添加到您的问题中。

标签: python matplotlib plot time-series visualization


【解决方案1】:

看起来您正在使用 matplotlib 中的 pyplot。如果是这种情况,这里已经有解决方案:Label python data points on plot

如果你想要一些更详细的东西,Matplotlib 本身也有一个页面。他们向您展示了如何使用本示例中的箭头:https://matplotlib.org/3.1.0/gallery/text_labels_and_annotations/annotation_demo.html

【讨论】:

  • 我不是要标记every 数据点,而是我的buy-sell list 中的点。我需要匹配日期并添加一个绿色向上箭头表示买入,红色向下箭头表示卖出
  • 您可以将另一个系列添加到同一个情节中,只使用您对标记感兴趣的点。
  • 这正是 Matplotlib 教程所展示的 - 您指定要标记的每个点,如下所示:ax.annotate('axes fraction', xy=(3, 1), xycoords='data', xytext=(0.8, 0.95), textcoords='axes fraction', arrowprops=dict(facecolor='black', shrink=0.05), horizontalalignment='right', verticalalignment='top') 其中 xy=(3,1) 指定 (3,1) 处的点。您可以遍历您的买卖列表并使用您拥有的每个值填充该 xy 字段。然后只需使用偏移量即可获得所需的标签。
猜你喜欢
  • 1970-01-01
  • 2022-12-03
  • 2022-01-09
  • 2020-04-09
  • 2013-12-25
  • 2018-10-21
  • 1970-01-01
相关资源
最近更新 更多