在同一轴上绘图#

前面的帖子 future-vs-spot 绘制了原始数据和稍微(随机地)修改后的数据在同一空间上,但不在同一轴上。

从那个帖子中恢复第一张图片。

可以看到:

  • 图表的左右两侧有不同的刻度。

  • 这在观察摆动的红线(随机数据)时最明显,其在原始数据周围的范围为``+- 50``个点。

    在图表上的视觉印象是这些随机数据大多时候都在原始数据之上。这只是由于刻度不同造成的视觉印象。

虽然版本 1.9.32.116 已经有了对在同一轴上进行完全绘图的初步支持,但是图例标签会重复(只是标签,而不是数据),这真的很令人困惑。

版本 1.9.33.116 解决了这个问题,并允许在同一轴上完全绘图。用法模式与决定与其他数据一起绘制的模式相似。参考前面的帖子。

import backtrader as bt``` python

cerebro = bt.Cerebro()

data0 = bt.feeds.MyFavouriteDataFeed(dataname=’期货名称’) cerebro.adddata(data0)

data1 = bt.feeds.MyFavouriteDataFeed(dataname=’现货名称’) data1.compensate(data0) # 让系统知道对data1的操作会影响到data0 data1.plotinfo.plotmaster = data0 data1.plotinfo.sameaxis = True cerebro.adddata(data1)

cerebro.run() ```

data1 获取了一些 plotinfo 的值,以便:

  • 在和 plotmaster``(即 ``data0)相同的空间中绘图

  • 使用 sameaxis 来指示使用同一坐标轴

    之所以需要使用这个指示,是因为平台事先无法确定每个数据的刻度是否兼容。 因此,它会在独立的刻度上绘制它们。

上面的示例增加了一个在 sameaxis 上绘制的选项。一个示例执行: $ ./future-spot.py –sameaxis

以及生成的图表

要注意的是:

  • 只有一个右侧的刻度尺

  • 现在随机数据似乎明显围绕着原始数据振荡,这是预期的视觉行为

示例用法#

$ ./future-spot.py --help
usage: future-spot.py [-h] [--no-comp] [--sameaxis]

补偿示例
可选参数:
-h, --help

显示帮助信息并退出

–no-comp –sameaxis

示例代码 ===========.. literalinclude:: future-spot.py

language:

python

lines:

21-