使用geom_ribbon(ggplot2)绘制两个时间序列之间的差异,并改变颜色

时间:2017-07-07 22:10:19

标签: r ggplot2

我正在尝试通过绘制导出和导入来显示netexports(exports - imports),并根据netexports是正面还是负面来着色两个系列之间的差异。

使用R:

library(tidyverse)

data <- tribble(
  ~year, ~exports, ~imports,
  #--|--|----
  2003, 3, 3.6,
  2004, 4, 8.5,
  2005, 7, 7,
  2006, 9, 7,
  2007, 15, 9,
  2008, 17, 12,
  2009, 7, 8,
  2010, 8, 7,
  2011, 8, 8,
  2012, 7, 9,
  2013, 2, 11,
  2014, 9, 13,
  2015, 5, 15
)

ggplot(data, aes(x = year)) +
  geom_ribbon(aes(ymin = imports, ymax = exports))

这让我:

enter image description here

这个系列之间的差异已经有了颜色,但并没有告诉我哪一个更高。

接下来我尝试过:

ggplot(data, aes(x = year)) +
  geom_ribbon(aes(ymin = imports, ymax = exports, fill = exports > imports))

哪个收益率:

enter image description here

但这里似乎有些不对劲,我不确定它是什么。

1 个答案:

答案 0 :(得分:1)

虽然在值相等的位置没有行,但仍然会失败。根据您的需要,您可以计算它们交叉的2008年到2009年之间的点,并人为地将其添加到数据集中。

data$minval <- pmin(data$imports, data$exports)

ggplot(data, aes(x = year)) +
  geom_ribbon(aes(ymin = minval, ymax = exports), fill = "blue") +
  geom_ribbon(aes(ymin = minval, ymax = imports), fill = "red")