我正在绘制一系列不同的数据,这些数据是在相同的个体上以小平面相邻的方式测量的。对于某些类型的数据,正值是“好”,而对于某些类型,负值是“好”。后一类变量通常用翻转的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反转吗?
答案 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}}
答案 1 :(得分:1)
这现在也可以使用 ggh4x
package 或 facetscales
包来实现(参见 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)