在facet_grid
中, ggplot2 会自动定义将在Y轴上显示的值范围。如果使用scale = "free_y"
,则值的范围可能因方面而异。
或者,用户可以使用scale_y_continuous
定义他/她自己将在Y轴上显示的值范围。但在这种情况下,所有方面的范围都是相同的。
我的问题是:用户是否有办法定义特定于分面的Y轴范围?
示例:假设facet变量取2个值(A和B),Y值介于0到10之间,A介于20和100之间。有没有办法指示 ggplot2 仅为A显示0到5之间的Y值,为B显示20到50之间的Y值?或者,更复杂的是,指示 ggplot2 显示A的所有Y值(默认值),但B只显示20到50之间的值?
使用晶格,可以使用预先面板定义面板特定的Y轴范围。我想知道这是否可以用 ggplot2 ?
PS:我当然不想选择在运行绘图之前显示Y值,但仅限于显示时。
答案 0 :(得分:2)
我不知道如何告诉 ggplot2 自行完成此操作,但仅仅通过对数据进行子集化来实现相同的效果并不是非常困难:
#Sample data matching your description
dat <- data.frame(x = runif(100),
y = c(runif(50,0,10),runif(50,20,100)),
grp = rep(LETTERS[1:2],each = 50))
#Plotting everything
ggplot(dat) +
facet_wrap(~grp,scales = "free_y") +
geom_point(aes(x = x,y = y))
#Plotting only 0-5 in grp A, 20-50 in grp B
ggplot(subset(dat,(grp == 'A' & y <= 5) | (grp == 'B' & y >= 20 & y <= 50))) +
facet_wrap(~grp,scales = "free_y") +
geom_point(aes(x = x,y = y))