【问题标题】:Plotting a "signals" series on a Matplotlib chart在 Matplotlib 图表上绘制“信号”系列
【发布时间】:2014-02-01 09:31:42
【问题描述】:

我正在制作图表分析工具,但遇到以下问题。到目前为止,我有一个由以下代码制作的图表:

def makeTheChart2(self, ser1, ser2, ser3):
    ecchart.figure(2)
    ecchart.subplot(111)
    ecchart.plot(ser1,label = "Upper Band", color = "black")
    ecchart.plot(ser2, label = "Lower Band", color = "blue")
    ecchart.plot(ser3, label = "Price", color = "red")
    ecchart.legend(loc='upper center', bbox_to_anchor=(0.5, -0.05),
      fancybox=True, shadow=True, ncol=5)
    ecchart.ylabel('Indicators evolution')
    ecchart.suptitle('Indicators', fontsize = 20)

结果是一张图表,显示一条红线(股票价格)包含在上(黑色)和下(蓝色)带之间(对不起,我无法发布图片,我是 Stack Overflow 的新手,所以我'还没有足够的声誉)。

绘制的三个系列是“ser1”、“ser2”和“ser3”。现在,假设我有第四个系列,它不是由浮点数组成,而是由布尔值“真假”组成。具体来说,当红线穿过黑线或蓝线时,列表将为“真”,反之则为“假”。 有没有办法“绘制”这些信息,或者每次红线“价格”触及/穿过另外两条线之一时更好地在图表中添加标签? (我猜这个信息会包含在第四个列表中,就像每次列表值为 True 时显示一个小箭头)。

提前致谢。

【问题讨论】:

  • 如果您链接到图片(比如发布在 imgur 上),更高代表的用户可以为您内联发布。

标签: python matplotlib


【解决方案1】:

看看这个答案:matplotlib: Set markers for individual points on a line

要获取您的markers_on(在引用的答案中称为),您可以执行以下操作:

>>> import numpy as np
>>> x = np.array([1,2,3,4,5])
>>> b = np.array([True,False,False,True,False]) # this is your boolean data array
>>> markers_on = x[~b]
>>> markers_on
array([2, 3, 5])

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2012-04-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多