用2个y轴不同比例绘制2个xts对象

时间:2019-12-27 17:54:17

标签: r ggplot2 xts

在同一张图中绘制两个不同的变量时遇到问题。我想绘制COT余额和USD / BRL的价格变量(数据是一个xts对象)。

tail(COT_USD_BRL)
           Long.Positions Short.Positions Change.Long Change.Short X..Long X..Short
2019-11-12           1662           11742        -564         -956     3.1     21.9
2019-11-19           2619           10955         957         -788     4.6     19.2
2019-11-26           3935            9697        1316        -1258     5.7     14.0
2019-12-03           7351           11066        3416         1369    11.9     17.9
2019-12-10           8339            7046         988        -4020    14.3     12.1
2019-12-17           4681           10964       -3658         3918     8.6     20.2
           COT.Balance  Price
2019-11-12       -18.8 4.1677
2019-11-19       -14.6 4.1945
2019-11-26        -8.3 4.2332
2019-12-03        -6.0 4.2066
2019-12-10         2.2 4.1470
2019-12-17       -11.6 4.0719

比例不同。价格变量不适合第二个刻度,我也不知道为什么。有人可以帮我吗? 我正在使用的代码是:

  ggplot(data = COT_USD_BRL, aes(x = index(COT_USD_BRL), y = COT_USD_BRL$COT.Balance)) +
  geom_line(inherit.aes = TRUE) +
  scale_y_continuous(name = "USD_BRL", sec.axis = sec_axis(~. /(100)+3.2)) +
  geom_line(aes(x = index(COT_USD_BRL), y = COT_USD_BRL$Price), color = "red") +
  scale_x_date(date_breaks = "6 months", date_labels = "%b-%Y") + theme_linedraw()

这是情节:

COT Balance x Price

请让我知道是否错过了一些有用的信息。

1 个答案:

答案 0 :(得分:0)

这是因为print(program.Calc_Speed()) 仅创建轴标签,而不用作绘制数据的参考轴。因此,第二组数据是基于左y轴绘制的。您需要将比例因子应用于第二个y值sec.axis,以便与左y轴和Price的值匹配。

没有可重复的数据集示例(请参见此处:How to make a great R reproducible example),很难确定正确的比例因子,但是也许您应该从以下开始:

USD_BRL

希望它可以帮助您找到解决问题的方法。