首页 > 解决方案 > 用 ggplot2 和图例显示显示不显着的系数

问题描述

我试图为不显着的系数(p>0.05)和那些不显着的系数显示不同的颜色。另外,如果有人有办法显示图例或表示颜色也会很好..

有任何想法吗?

示例代码:

library(nycflights13)
library(dplyr)
library(dotwhisker)
library(MASS)

flights <- nycflights13::flights
flights<- sample_n (flights, 500)

m1<- glm(formula = arr_delay ~ dep_time + origin+ air_time+ distance , data = flights)
#m1<- glm(formula = arr_delay ~ . , data = flights)

m1<- stepAIC(m1)
  p<- dotwhisker::dwplot(m1)
  z<- p + 
    geom_vline(xintercept=0, linetype="dashed")+
    geom_segment(aes(x=conf.low,y=term,xend=conf.high,
                     yend=term,col=p.value<0.05)) + 
    geom_point(aes(x=estimate,y=term,col=p.value<0.05)) +
  xlab("standardized coefficient") + 
  ylab("coefficient") +
  ggtitle("coefficients in the model and significance")
  print(z)

标签: rggplot2

解决方案


您的代码已经可以满足您的需求。问题是产生的对象p已经dwplot有一个geom_segment层和一个geom_point带有许多美学映射的层。它们的颜色当前映射到变量model,这只是一个因素级别,允许在并排比较模型时使用不同的颜色。但是可以覆盖它们:

p$layers[[1]]$mapping[5] <- aes(color = p.value < 0.05)
p$layers[[2]]$mapping[4] <- aes(color = p.value < 0.05)

您可以使用更改图例标签

p$labels$colour <- "Significant"

默认情况下,dwplot也隐藏图例,但我们可以重置它:

p$theme <- list()

因此,无需添加任何新的几何图形或创建对象z,我们就有:

p

在此处输入图像描述

请注意,这p仍然是一个有效且内部一致的 ggplot,因此您可以继续根据需要对其进行样式设置,例如:

p + theme_bw() + geom_vline(xintercept = 0, lty = 2)

在此处输入图像描述


推荐阅读