【问题标题】:How to add vertical and horizontal lines to only one panel in a facetted plot?如何在多面图中仅向一个面板添加垂直线和水平线?
【发布时间】:2020-09-02 05:20:41
【问题描述】:

我正在使用 interact_plot 函数来绘制一个三向交互。 我想通过添加一些垂直和水平线来添加重要的 Johnson-Neyman 区域。 当我使用 jtools 进行简单绘图时,唯一重要的曲线是 mod2 - 1 SD 组。 我只想在 mod2 -1 SD 面板(左面板)中包含 JN 间隔(vline 和 hline)。

这是我的脚本,它可以将垂直和水平线应用于所有 3 个 mod2 面板。

png(filename = 'interaction_plot.png', width=1000, height=400)
P=interact_plot(fit4, pred = mean_centered_Pren_CESD, modx = gender_male, mod2 = 
mean_centered_auc_post_cesd, interval = TRUE, plot.points = TRUE,colors = c("blue", 
 "orange"),
                x.label = "Prenatal depression",
                y.label = "ADHD",
                pred.labels = "Prenatal depression",
                modx.labels = c("Girls"=0,"Boys"=1),
                mod2.labels = c("A) Low postnatal depression","B) Average postnatal 
                depression", "C) High postnatal depression"),
                main.title = NULL,
                legend.main = "Sex")
P +
  drop_gridlines() +
  geom_vline(xintercept=c(-0.06, 1.74), linetype='dashed', size=1) +
  geom_hline(yintercept=c(-0.14, 1.33), linetype='solid', size=1)
dev.off()

在这些代码行中,我只想申请 "

geom_vline(xintercept=c(-0.06, 1.74), linetype='dashed', size=1) +
  geom_hline(yintercept=c(-0.14, 1.33), linetype='solid', size=1)

" 到基于默认 -1SD 分组的“低”的 mod2 组。 谁能帮帮我,我已经尝试了很多东西,但我不知道如何调用左侧面板。

非常感谢。

【问题讨论】:

    标签: r ggplot2 facet


    【解决方案1】:

    使用mtcars 作为示例数据集,通常可以这样实现:

    1. 将垂直线或水平线的坐标放入数据框中。
    2. 将 facetting 变量添加到此数据框。
    3. xinterceptyintercept 放入aes()

    通过这种方式,您可以指定要在哪些面板中使用geom_vline 和/或geom_hline。在我的示例中,两者都仅在cyl = 4 的第一个面板中绘制。

    library(ggplot2)
    
    vh_line <- data.frame(
      xintercept = c(100, 200),
      yintercept = c(10, 20),
      cyl = c(4, 4)
    )
    
    ggplot(mtcars, aes(hp, mpg, color = factor(cyl))) +
      geom_point() +
      geom_vline(data = vh_line, aes(xintercept = xintercept), linetype='dashed', size=1) +
      geom_hline(data = vh_line, aes(yintercept = yintercept), linetype='solid', size=1) +
      facet_wrap(~cyl)
    

    【讨论】:

    • 具有interact_plot函数的包交互已经做了分面
    • @Lyly。是的。我并不是要添加另一个 facet_wrap。我只是想向您说明如何将 geom_v/hline 仅放在多面图中的一个面板上的一般方法。如果您的情况不适用,我建议您将一些示例数据添加到您的帖子和您用于分析的包中。否则很难为您的具体情况找到解决方案。另见how to make a minimal reproducible example
    猜你喜欢
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    • 2020-08-23
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    相关资源
    最近更新 更多