将条形图和折线图与ggplot2结合使用

时间:2016-09-16 10:11:00

标签: r ggplot2 data.table

我知道在ggplot2图中添加第二个轴实际上不受欢迎,但就我而言,它确实有意义,至少对我而言。 我试图展示某个行业的总变量的发展,让我们说营业额,我想也要展示公司的数量,这些公司在每个时间点都是该行业的一部分。因此,您可以看到总营业额的增长并非完全由公司数量推动,而是由公司营业额的增加所驱动。当然,我可以计算出平均值,但是我无法真正证明,实际上是在推动增加/减少。

 dt.company.data <- data.table(year = 2000:2015, Num.Companies = c(385, 374, 
                                           365, 390, 410, 425, 429, 427, 410, 407, 434, 444, 519, 506, 463, 
                                           388), Value = c(3155.69125, 4086.579, 7553.78425, 7515.07275, 
                                                           7571.95025, 6884.45075, 20009.79475, 15886.1025, 9813.0265, 11232.50775, 
                                                           11323.67375, 19137.25225, 21569.86375, 20616.758, 20030.20875, 
                                                           27840.66625))

显然,以下代码不起作用,因为两个变量的比例都是如此不同。

ggplot(dt.company.data) +
    geom_bar(aes(x = year , weight = Num.Companies)) +
    geom_line(aes(x = year, y = Value))

1 个答案:

答案 0 :(得分:1)

Value缩放到num.companies的范围即可实现此目的。我添加了一个虚拟id来生成图例。

dt.company.data$id <- factor(1)

ggplot(dt.company.data) +
  geom_bar(aes(x = year , weight = Num.Companies), fill = "grey70") +
  geom_line(aes(x = year, y = Value/100, colour = id)) + 
  scale_colour_manual(name = "Legend", labels = c("Value in 100"), values = c("black"))

结果如下: enter image description here

相关问题