如何在ggplots中使x / y轴和突出的刻度之间产生间隙

时间:2017-06-19 01:51:34

标签: r ggplot2

如何创建以下图形样式:

enter image description here

注意x-y轴(红色圆圈)与x-y轴(箭头)上的突出刻度之间的差距。

我现在能做的就是这个:

library(ggplot2)
p <- ggplot(mpg, aes(class, hwy)) +
     geom_boxplot() +
     theme_bw(base_size=10) 

p

enter image description here

4 个答案:

答案 0 :(得分:6)

您可以使用提供ggthemesgeom_rangeframe的{​​{1}}来实现类似的功能。

theme_tufte

enter image description here More inspiration here

答案 1 :(得分:5)

一个选项是删除内置轴线,然后使用geom_segment添加带间隙的轴。为了更容易将断开的轴线放在正确的位置,我们还使用scale_y_continuous来准确指定轴断裂和限制的位置。该代码还显示了如何增加刻度线的大小。

ggplot(data=mpg, aes(class, hwy)) +
  geom_segment(y=10, yend=50, x=0.4, xend=0.4, lwd=0.5, colour="grey30", lineend="square") +
  geom_segment(y=5, yend=5, x=1, xend=length(unique(mpg$class)), 
               lwd=0.5, colour="grey30", lineend="square") +
  geom_boxplot() +
  scale_y_continuous(breaks=seq(10,50,10), limits=c(5,50), expand=c(0,0)) +
  theme_classic(base_size=12) +
  theme(axis.line = element_blank(),
        axis.ticks.length = unit(7,"pt")) 

enter image description here

答案 2 :(得分:2)

最初是作为对 related question 的回答发布的,我也被鼓励在这里分享我的回答。

ggh4x 包有一个 truncated axis guide,它通过利用 ggplot2 v3.3.0 中引入的位置指南定制解决了这个问题。因为它直接使用引导系统而不是通过几何体工作,所以它像常规轴一样响应主题设置。 (免责声明:我是 ggh4x 的作者)。

默认情况下,它会将轴截断到最外面的中断处,但这可以调整。

library(ggplot2)
library(ggh4x)

ggplot(mpg, aes(class, hwy)) +
  geom_boxplot() +
  guides(x = "axis_truncated", y = "axis_truncated") +
  theme(axis.line = element_line(colour = "black"))

reprex package (v1.0.0) 于 2021 年 4 月 19 日创建

答案 3 :(得分:-1)

线条顶部和底部的条形图添加了

geom_errorbar(aes(ymin = lower, ymax = upper), width = 0.2)

或将geom添加到另一个图层。

stat_summary(fun.data = mean_sdl,
             fun.args = list(mult = 1),
             geom = "errorbar",
             width = 0.1)