堆叠的负/正时间序列使用ggplot2和geom_area

时间:2012-12-05 21:04:36

标签: r ggplot2 time-series

我正在尝试重现一个堆叠的时间序列图表,该图表显示了银行资产负债表的构成和大小如何随时间变化。看起来应该是这样的:

Balance Sheet

资产高于x轴且负债低于x轴。

到目前为止,我已经能够使用ggplot()成功地重现图表的每一半:

# plot assets stack
assets.plot <- ggplot(assetsm, aes(x=dates, y=value, fill=variable)) + 
  geom_area() 


# plot liability stack
liabiln.plot <- ggplot(liabilnm, aes(x=dates, y=value, fill=variable)) +
  geom_area() 

给出:

Assets (left) and liabilities (right)

但是当我把它们加在一起时,出现了问题:

# plot whole bs
bs.plot <- ggplot(bsm, aes(x=dates, y=value, fill=variable)) +
  geom_area()

给出:

enter image description here

记下它旁边的色标和上面的图片,你可以看到:

  1. 只显示了一半的变量(从V19开始)。
  2. 这些变量恰好与数据的“负债”一半(都应该是负数)相吻合。
  3. x上每个点的堆栈总高度等于上图中负债堆栈的总高度,但它不再从y = 0开始 - 它落在y轴的两侧。
  4. 我不知道我的代码中缺少什么导致这种情况 - 我已经摆弄了position = "stack"显式,并尝试了this question的答案(相同的结果),而且我我现在已经结束了。

    我认为这可能是一个数据问题,所以我上传了数据here。如果我能使问题更清楚或提供额外的细节,请告诉我。

1 个答案:

答案 0 :(得分:3)

我无法解释你目前所看到的行为,但是当我做这样的顶部/底部类型图时,我倾向于使用单独的数据帧进行单独的图层调用:

ggplot() + 
    geom_area(data = assetsm, aes(x=dates, y=value, fill=variable)) + 
    geom_area(data = liabilnm, aes(x=dates, y=value, fill=variable))

看起来像你想要的那样:

enter image description here