在单个ggplot facet

时间:2017-05-11 12:28:41

标签: r ggplot2

我正在绘制一系列不同的数据,这些数据是在相同的个体上以小平面相邻的方式测量的。对于某些类型的数据,正值是“好”,而对于某些类型,负值是“好”。后一类变量通常用翻转的y轴绘制。是否可以使用ggplot修改各个方面的轴方向?

dat <- data.frame(type = rep(c('A', 'B'), each = 10), x = 1:10, y = rnorm(20))

ggplot(dat, aes(x, y)) + geom_point() + facet_wrap( ~ type, scales = 'free_y')

例如,我可以使用y轴进行B反转吗?

2 个答案:

答案 0 :(得分:3)

我不确定这是否可行,因此我会选择使用 gridExtra 包中的library(gridExtra) library(ggplot2) dat <- data.frame(type = rep(c('A', 'B'), each = 10), x = 1:10, y = rnorm(20), stringsAsFactors = FALSE) p_A <- ggplot(subset(dat, type == 'A'), aes(x, y)) + geom_point() + facet_wrap( ~ type, scales = 'free_y')+ scale_y_continuous(breaks = c(-1,0,1)) p_B <- ggplot(subset(dat, type == 'B'), aes(x, y)) + geom_point() + facet_wrap( ~ type, scales = 'free_y')+ scale_y_reverse(breaks = c(-1,0,1)) grid.arrange(p_A, p_B, nrow = 1) 功能解决方案。

{{1}}

enter image description here

答案 1 :(得分:1)

这现在也可以使用 ggh4x packagefacetscales 包来实现(参见 here 了解 facetscales 方法):

library(ggh4x)

dat <- data.frame(type = rep(c('A', 'B'), each = 10), x = 1:10, y = rnorm(20))

scales <- list(
  scale_y_continuous(),
  scale_y_reverse()
  )

ggplot(dat, aes(x, y)) + 
  geom_point() +
  facet_wrap( ~ type, scales = 'free_y') +
  facetted_pos_scales(y = scales)