由于比例失真,该图可能会产生误导,但是...您可以为两个 x 范围绘制单独的面板,一个使用对数缩放,另一个使用线性缩放,然后将它们放在一起。我们将更改绘图边距,以控制绘图之间的空间量并获得适当的重叠。
library(ggplot2)
library(scales)
library(grid)
library(gridExtra)
# Fake data
test <- data.frame(x=c(seq(1,100, length.out=20), 101:110), y=1:30)
左图 (x
p1 = ggplot(test[test$x<=100,], aes(x=x,y=y)) +
geom_point(size=2) +
scale_x_log10(limits=c(1,100), breaks=c(1,5,10, seq(20,100,20))) +
coord_cartesian(xlim=c(0.8,105), ylim=c(0,32), expand=FALSE) +
scale_y_continuous(limits=c(0,30)) +
theme(plot.margin=unit(c(0,-0.2,0,0),"lines")) +
labs(x="")
右图 (x >= 100):
p2 = ggplot(test[test$x>=100,], aes(x=x,y=y)) +
geom_point(size=2) +
scale_x_continuous(limits=c(100,110), breaks=seq(100,110,2)) +
coord_cartesian(xlim=c(100,111), ylim=c(0,32), expand=FALSE) +
theme(plot.margin=unit(c(0,0,0,-0.2), "lines"),
axis.title.y=element_blank(),
axis.ticks.y=element_blank(),
axis.text.y=element_blank()) +
labs(y="", x="")
grid.arrange(arrangeGrob(p1, p2, widths=c(0.7,0.3), ncol=2),
textGrob("x-label"), ncol=1, heights=c(0.95,0.05))