ggplot2 - 移除面板顶部边框

8
我想仅移除我的图形的顶部部分。 我在这里找到了一些指南herehere,但它们会删除所有边框或顶部和左侧。我知道我应该使用参数 panel.border ,并将其与 element_blank()element_rect() 一起使用,但我找不到正确的定义方式。 我想要的是: enter image description here
library(tidyverse)

mtcars %>% 
  ggplot(aes(factor(cyl), disp)) + 
  geom_boxplot() + 
  jtools::theme_apa() + 
  theme(
    panel.border = element_blank())

以下是结果:

这里输入图片描述

3个回答

9

还有一种选择(来自Tjebo的建议)

library(tidyverse)

mtcars %>% 
  ggplot(aes(factor(cyl), disp)) + 
  geom_boxplot() + 
  scale_y_continuous(sec.axis = sec_axis(~ .))+
  jtools::theme_apa() +
  theme(
    axis.line.x.bottom = element_line(color = 'black'),
    axis.line.y.left   = element_line(color = 'black'),
    axis.line.y.right  = element_line(color = 'black'),
    axis.text.y.right  = element_blank(),
    axis.ticks.y.right = element_blank(),
    panel.border       = element_blank())

如果您现在删除右轴文本和刻度线,就快完成了 ;) +1 - tjebo
1
谢谢!虽然这只是一个变通方法,但我更喜欢它,而不是加载其他脚本/包。 - DJV

5

使用您发布的其中一篇参考文献,您将进入脚本(感谢Rudolf Cardinal和Alex Holcombe)。您可以使用theme_border()函数来绘制所需的边框。要这样做,只需下载链接中提供的脚本,将其放入工作目录并执行以下代码:

library(tidyverse)
library(grid)
source("rnc_ggplot2_border_themes_2013_01.r")
mtcars %>% 
  ggplot(aes(factor(cyl), disp)) + 
  geom_boxplot() + 
  jtools::theme_apa() + 
  theme(
    panel.border = theme_border(type = c("bottom","right","left")))

希望这有所帮助!

无边框图表


谢谢你的回答!这实际上是一个非常好的解决方法。我唯一的问题是我需要阅读额外的脚本,而且它会加载许多变量到我的环境中。他们应该将其制作成一个包! :) - DJV
主题边框错误(type = c("bottom", "left")): 找不到函数"theme_border"。 - jzadra

4
另一个选择是使用大规模作弊... 使用theme_classic并添加一个片段。
library(tidyverse)

mtcars %>% 
  ggplot(aes(factor(cyl), disp)) + 
  geom_boxplot() + 
  #jtools::theme_apa() + 
  theme_classic() +
  annotate(geom = 'segment', x= Inf, xend = Inf, y = -Inf, yend = Inf)

该内容由 reprex package (v0.3.0) 在2020年1月20日创建


谢谢您的回答,但是我有其他主题设置与您的回答冲突。 - DJV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接