改变ggplot2中的facet_grid输出

时间:2014-05-06 14:34:30

标签: r ggplot2

这是我的数字的当前版本:

    require(MuMIn)
    require(ggplot2)
    data(Cement)
    d <- data.frame(Cement)
    dd <- melt(d,id.var = "y")

ggplot(dd,aes(x = y,y = value, group = variable)) + 
  geom_point(size = 2)  + 
  theme_classic() +
  facet_grid(variable ~ ., scales = "free") + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + 
  xlab("") +
  ylab("") +
  guides(colour = FALSE)

enter image description here

我怎么能

1)更改此图形,使X1,X2,X3和X4标签位于左侧,并且它们读取c(“因子x ^ 2”,“因子x ^ 3”,“因子x ^ 4 “,”因子x ^ 5“),

2)是否有方法用一个盒子围住每个面板,以使它们更加明显?

3 个答案:

答案 0 :(得分:7)

试试这个,

library(ggplot2)
library(gtable)

p <- ggplot(mtcars, aes(mpg, cyl))+
  facet_grid(gear~., labeller=label_both) + geom_point() +
  theme(strip.text.y=element_text(angle=90)) + labs(y="")


g <- ggplotGrob(p)

g$layout[g$layout$name == "strip-right",c("l", "r")] <- 2
grid.newpage()
grid.draw(g)

答案 1 :(得分:2)

问题1(部分)和2的解决方案:

names(d) <- c("x^1","x^2","x^3","x^4","y")
dd <- melt(d,id.var = "y", variable.name="factor")

ggplot(dd, aes(x = y, y = value, group = factor)) + 
  geom_point(size = 2)  + 
  theme_bw() +
  facet_grid(factor ~ ., scales = "free", labeller = label_both) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1), panel.grid = element_blank()) + 
  xlab("") +
  ylab("") +
  guides(colour = FALSE)

给出: enter image description here

答案 2 :(得分:0)

使用labeller是一个不错的选择(问题#1),facet_gridfacet_wrap有一个switch参数,用于在一点点移动构面标签(问题#2) :

library("ggplot2")
x <- runif(100)
exp <- rep(1:4, each = 25)
y <- x^exp
df <- data.frame(x, y, exp)

# facet_grid
ggplot(df, aes(x, y)) +
facet_grid(exp ~ ., labeller = label_bquote(factor~x^.(exp)), switch = "y") + 
geom_point() + labs(y="") +
theme(strip.background = element_blank()) # Remove facet border if you want

# facet_wrap
ggplot(df, aes(x, y)) +
facet_wrap(~ exp, ncol = 1, labeller = label_bquote(factor~x^.(exp)), switch = "y") + 
geom_point() + labs(y="") +
theme(strip.background = element_blank())