2016-09-16 95 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