2011-10-26 23 views

回答

27

這裏是由子集劃分數據的另一種方法:

ggplot(mtcars, aes(mpg, disp)) + facet_wrap(~cyl) + 
    geom_point(data = subset(mtcars, cyl == 4)) + 
    geom_line(data = subset(mtcars, cyl == 6)) + 
    geom_text(data = subset(mtcars, cyl == 8), aes(label = gear)) 

enter image description here

+4

可以通過使用子集'=簡化代碼位(CYL == 4)',而不是使用'data'調用。 – Ramnath

+0

優秀!我經常忘記子集的論點......謝謝。 – kohske

2

這裏有5組(g)的一些樣本數據。我們在第五個方面需要不同的幾何類型。注意創建兩個不同版本的y變量的技巧,一個用於前四個方面,另一個用於第五個方面。

dfr <- data.frame(
    x = rep.int(1:10, 5), 
    y = runif(50), 
    g = gl(5, 10) 
) 
dfr$is.5 <- dfr$g == "5" 
dfr$y.5 <- with(dfr, ifelse(is.5, y, NA)) 
dfr$y.not.5 <- with(dfr, ifelse(is.5, NA, y)) 

如果不同的geoms可以使用相同的美學(如點和線),那麼這不是問題。

(p1 <- ggplot(dfr) + 
    geom_line(aes(x, y.not.5)) + 
    geom_point(aes(x, y.5)) + 
    facet_grid(g ~ .) 
) 

但是,線條圖和條形圖需要不同的構面,因此它們不能按預期工作。

(p2 <- ggplot(dfr) + 
    geom_line(aes(x, y.not.5)) + 
    geom_bar(aes(y.5)) + 
    facet_grid(g ~ .) 
) 

在這種情況下,最好是畫兩個獨立的圖表,也許他們Viewport結合起來。

相關問題