如何在ggplot中为不同的面板指定不同的几何对象?
(代表@pacomet提问,他想知道。)
以下是另一种通过子集数据的方法:
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))
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))
(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
将它们组合起来。
subset = .(cyl == 4)
代替data
来简化代码。这样写能使代码更简单易懂,但不改变原意。 - Ramnath.
来自包plyr
,但我认为它不再起作用了。 - fc9.30ggplot
中的另一种选择是使用data = ~subset(.x, cyl == 4)
。 - shizundeiku