ggplot2 - 仅显示 y 轴的上下范围
ggplot2 - show only lower and upper range of y axis
我的 geom_dotplot 中的 y 轴范围从 0 到 1。点仅在上限和下限范围内。我想将没有点 (0.05 - 0.95) 的中间范围缩小到 0.05 区间,并与 0 - 0.05 之间的下限和 0.95-1 的上限一起显示。
有人可以帮忙吗?
我的代码是:
ggplot(
identical, aes(x=SNV, y=RAF, fill=Mutual_zygosity_of_parents)) +
geom_dotplot(
binaxis = 'y', stackdir = 'center', stackratio = 0, dotsize = 0.3, show.legend = FALSE) +
scale_fill_manual(values=c("cadetblue1")) +
theme(legend.key=element_blank()) +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())+
theme(axis.text.y = element_text(face="bold",size=16),
axis.title.y = element_text(face="bold",size=16)) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")) +
expand_limits(x= c(-1,+195))
非常感谢
米洛斯
您的问题无法重现,因为我们没有您的数据,但我们至少可以构造一个具有相同名称的类似数据结构,以便我们可以使用您的绘图代码获得类似的结果:
set.seed(1)
identical <- data.frame(SNV = factor(sample(1:200, 400, TRUE)),
RAF = c(runif(200, 0, 0.02), runif(200, 0.97, 1)),
Mutual_zygosity_of_parents = "Yes")
p <- ggplot(
identical, aes(x=SNV, y=RAF, fill=Mutual_zygosity_of_parents)) +
geom_dotplot(
binaxis = 'y', stackdir = 'center', stackratio = 0, dotsize = 0.3, show.legend = FALSE) +
scale_fill_manual(values=c("cadetblue1")) +
theme(legend.key=element_blank()) +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())+
theme(axis.text.y = element_text(face="bold",size=16),
axis.title.y = element_text(face="bold",size=16)) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")) +
expand_limits(x= c(-1,+195))
p
现在的问题是 ggplot 不能做不连续的轴,但你可以通过刻面来相当接近。我们需要做的就是将 faceting 变量设置为 RAF < 0.5
,这会将上下点分成它们自己的组。如果我们也使用scales = "free_y"
,那么y轴会“放大”到上下点的范围:
p + facet_grid(RAF < 0.5~., scales = "free_y")
theme(strip.background = element_blank(),
strip.text = element_blank())
我的 geom_dotplot 中的 y 轴范围从 0 到 1。点仅在上限和下限范围内。我想将没有点 (0.05 - 0.95) 的中间范围缩小到 0.05 区间,并与 0 - 0.05 之间的下限和 0.95-1 的上限一起显示。 有人可以帮忙吗? 我的代码是:
ggplot(
identical, aes(x=SNV, y=RAF, fill=Mutual_zygosity_of_parents)) +
geom_dotplot(
binaxis = 'y', stackdir = 'center', stackratio = 0, dotsize = 0.3, show.legend = FALSE) +
scale_fill_manual(values=c("cadetblue1")) +
theme(legend.key=element_blank()) +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())+
theme(axis.text.y = element_text(face="bold",size=16),
axis.title.y = element_text(face="bold",size=16)) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")) +
expand_limits(x= c(-1,+195))
非常感谢 米洛斯
您的问题无法重现,因为我们没有您的数据,但我们至少可以构造一个具有相同名称的类似数据结构,以便我们可以使用您的绘图代码获得类似的结果:
set.seed(1)
identical <- data.frame(SNV = factor(sample(1:200, 400, TRUE)),
RAF = c(runif(200, 0, 0.02), runif(200, 0.97, 1)),
Mutual_zygosity_of_parents = "Yes")
p <- ggplot(
identical, aes(x=SNV, y=RAF, fill=Mutual_zygosity_of_parents)) +
geom_dotplot(
binaxis = 'y', stackdir = 'center', stackratio = 0, dotsize = 0.3, show.legend = FALSE) +
scale_fill_manual(values=c("cadetblue1")) +
theme(legend.key=element_blank()) +
theme(axis.title.x=element_blank(),
axis.text.x=element_blank(),
axis.ticks.x=element_blank())+
theme(axis.text.y = element_text(face="bold",size=16),
axis.title.y = element_text(face="bold",size=16)) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(),
axis.line = element_line(colour = "black")) +
expand_limits(x= c(-1,+195))
p
现在的问题是 ggplot 不能做不连续的轴,但你可以通过刻面来相当接近。我们需要做的就是将 faceting 变量设置为 RAF < 0.5
,这会将上下点分成它们自己的组。如果我们也使用scales = "free_y"
,那么y轴会“放大”到上下点的范围:
p + facet_grid(RAF < 0.5~., scales = "free_y")
theme(strip.background = element_blank(),
strip.text = element_blank())