2012-05-03 49 views
0

我想在ggplot2中疊加線圖,疊加在x軸上方的正值和疊加在x軸下方的負值。我已經成功地將每種線條類型分別堆疊起來,但無法在單個圖上進行疊加。我正在尋找一些關於如何做到這一點的幫助,無論是通過疊加情節還是在單個情節中做一些創意。組合的積極和消極的堆積線圖

我下面的代碼使用了一個簡單的ggplot與堆疊geom_line圖。一半的「類型」是相對於時間的正值,另一半的「類型」都是負值。

p <- ggplot(dataForm, aes(x=Time,y=Value,group=Type),colour=factor(Type)) 
    p + geom_line(aes(fill = Type),position = "stack") 

我試圖分別指定正值和負值但沒有成功的替代:

p <- ggplot(dataForm, aes(x=Time,y=Value,group=Type),colour=factor(Type)) 
    p + geom_line(data = data1,aes(fill = Type),position = "stack") 
    p + geom_line(data = data1,aes(fill = Type),position = "stack") 

上如何做到這一點的任何建議是不勝感激。謝謝。

+3

[重現的實例](http://stackoverflow.com/q/5963269/324364)像酒在這裏。他們放鬆了每個人,並讓他們說話。提示提示提示。 – joran

回答

5

在沒有a reproducible example,我適於this example from learnr

library(ggplot2) 
library(plyr) 

data = read.table(text="Time Type Value 
1 a 8 
2 a 10 
3 a 10 
4 a 5 
5 a 3 
1 b 9 
2 b 5 
3 b 7 
4 b 8 
5 b 3 
1 c -3 
2 c -1 
3 c -5 
4 c -4 
5 c -7 
1 d -11 
2 d -3 
3 d -9 
4 d -6 
5 d -6", header=TRUE) 

p <- ggplot(data, aes(x=Time)) 
p <- p + geom_line(subset = .(Type %in% c('a', 'b')), 
        aes(y=Value, colour = Type), 
        position = 'stack') 
p <- p + geom_line(subset = .(Type %in% c('c', 'd')), 
        aes(y=Value, colour = Type), 
        position = 'stack') 
p 

爲了產生這樣的:

Stacked line chart

而且,良好的措施,有橫線的區域圖表:

p <- ggplot(data, aes(x=Time)) 
p <- p + geom_area(subset = .(Type %in% c('a', 'b')), 
        aes(y=Value, fill=Type), 
        position = 'stack') 
p <- p + geom_area(subset = .(Type %in% c('c', 'd')), 
        aes(y=Value, fill = Type), 
        position = 'stack') 
p <- p + geom_hline(yintercept=0) 
p 

area chart