2016-09-16 116 views
1

我知道向ggplot2图中添加第二个轴实际上是不受欢迎的,但在我的情况下,它确实有意义,至少对我而言是这样。 我试图展示某个行业的综合变量的发展情况,比如说营业额,并且我还想显示在每个时间点属于该行业一部分的公司数量。所以你可以看到,总营业额的增长并非完全由公司数量来推动,而是由公司营业额的增加。我可以计算当然的平均值,但是我再也无法证明,实际上是在增加还是减少。将条形图和折线图与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

你试过缩放'Value'到num.companies'的'的规模与像'geom_line(AES(X =年,Y =价值/ 10))'并添加提示的传说? – loki

回答

1

通过缩放Valuenum.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

+0

好吧,这似乎是一个不错的和干净的解决方案,虽然更通用的方法,没有手动定义比例因子会很好。 – hannes101

+1

你可以想象一个能自动找到最佳缩放因子作为指数10的函数。 – loki