2017-08-07 21 views
2

我想將geom_area()的起始y值從零移開。這是在下面的例子中第一個函數調用是好的,但我怎麼能糾正的第二個呼叫的情節:爲geom_area定義其他起始值()

library(ggplot2) 

set.seed(123) 

myplot <- function (split.value) { 
    year <- (2000:2017) 
    index <- rnorm(18, split.value,5) 
    interp <- approx(year, index, n=1000) 
    df <- data.frame(year = interp$x, 
        index = interp$y, 
        valence = ifelse(interp$y <= split.value, "pos", "neg"), 
        stringsAsFactors = FALSE) 
    ggplot(df, aes(x = year, y = index)) + 
    geom_area(aes(fill = valence), alpha = 0.5) + 
    geom_line() + 
    geom_hline(yintercept = split.value) + 
    scale_fill_manual(values=c("green", "red"), guide=FALSE) + 
    scale_x_continuous(expand=c(0, 0)) 
} # cf. R Graphics Cookbook 

myplot(0) # o.k. (with more interpolation points) 
# but the following does not work: 

myplot(2) # .. would like to shift green-area-MIN-y-value to 2 
# and red-area-MAX-y to 2 

回答

1

geom_areageom_ribbon一種特殊情況,修復ymin爲零。所以下面的工作,而不是你的geom_area

geom_ribbon(aes(ymin=split.value, ymax=index, fill = valence), alpha = 0.5) + 
相關問題