在两个刻面ggplots中的一个中反转x轴

时间:2018-06-07 17:22:24

标签: r ggplot2

我想绘制对应于眼睛视网膜黄斑(R和L)的两个网格。 细胞的位置应该是这个

enter image description here

我可以使用ggplot2

获得下面的情节
width <- rnorm(128)
row <- rep(rep(seq(1,8),8),2)
col <- rep(unlist(lapply(seq(1,8), rep, 8)))
cell <- paste0(row, ".", col)
eye <- factor(c(rep("R", 64), rep("L", 64)), levels = c("R","L"))
data <- data.frame(x, row, col, cell, eye)
ggplot(data = data, aes(x=col, y=row, fill=width)) + 
geom_tile() + 
geom_text(aes(label=cell)) + 
facet_grid(.~eye) +
ggtitle("Macular grids") 

enter image description here

但是我需要反转与左眼相对应的网格的x轴。

如果可能的话,我想用facet来做,也就是说,没有grid.arrange

1 个答案:

答案 0 :(得分:1)

如果在将R或L粘贴到数字后将x变量设为一个因子,则可以这样做。可以指定因子的顺序,并在scale_x_manual

中删除字母
width <- rnorm(128)
row <- rep(rep(seq(1,8),8),2)
col <- rep(1:8, each = 8)
cell <- paste0(row, ".", col)
eye <- factor(rep(c("R", "L"), each = 64), levels = c("R","L"))
data <- data.frame(width, row, col, cell, eye) %>% 
  mutate(col2 = paste0(col, eye),
         col2 = factor(col2, levels = c(paste0(8:1, "R"), paste0(1:8,"L")))) 



ggplot(data = data, aes(x=col2, y=row, fill=width)) + 
  geom_tile() + 
  geom_text(aes(label=cell)) + 
  scale_x_discrete(label = function(str){substring(str, 1, 1)}) +
  facet_grid(.~eye, scales = "free_x") +
  ggtitle("Macular grids") 

enter image description here