簡體   English   中英

在R中的ggplot2系數圖中更改選擇線的顏色

[英]Change colors of select lines in ggplot2 coefficient plot in R

我想根據R中ggplot2系數圖中點估計是正還是負來更改系數線的顏色。例如:

require(coefplot)
set.seed(123)
dat <- data.frame(x = rnorm(100), z = rnorm(100))
mod1 <- lm(y1 ~ x + z, data = dat)
coefplot.lm(mod1)   

產生以下圖:

在此處輸入圖片說明

在此圖中,繪制時我想將“ x”變量更改為紅色。 有任何想法嗎? 謝謝。

我認為,您不能使用coefplot.lm生成的圖來執行此coefplot.lm 軟件包coefplot使用ggplot2作為繪圖系統,這本身是不錯的選擇,但它並不能像您想要的那樣輕松地使用顏色。 為了獲得所需的顏色,您需要在數據集中使用一個變量對值進行顏色編碼。 您需要在使用CE繪制點的圖層中的aes()函數中指定color = color-code 顯然,這與coefplot.lm函數的輸出是不可能的。 也許可以使用ggplot2 ggplot_build()函數更改顏色。 我想說,為這個任務編寫自己的函數會更容易。


我已經這樣做一次來繪制賠率。 如果需要,可以使用我的代碼。 隨時更改它。 這個想法與coefplot的相同。 首先,我們從模型對象中提取系數,並准備繪圖數據; 第二,實際上是情節。


提取系數和准備數據集的代碼

df_plot_odds <- function(x){
tmp<-data.frame(cbind(exp(coef(x)), exp(confint.default(x))))
odds<-tmp[-1,]
names(odds)<-c('OR', 'lower', 'upper')
odds$vars<-row.names(odds)
odds$col<-odds$OR>1
odds$col[odds$col==TRUE] <-'blue'
odds$col[odds$col==FALSE] <-'red'
odds$pvalue <- summary(x)$coef[-1, "Pr(>|t|)"]
return(odds)
}

繪制提取函數的輸出

plot_odds <- function(df_plot_odds, xlab="Odds Ratio", ylab="", asp=1){
    require(ggplot2)
    p <- ggplot(df_plot_odds, aes(x=vars, y=OR, ymin=lower, ymax=upper),asp=asp) + 
        geom_errorbar(aes(color=col),width=0.1) + 
        geom_point(aes(color=col),size=3)+
        geom_hline(yintercept = 1, linetype=2) +
        scale_color_manual('Effect', labels=c('Positive','Negative'),
                          values=c('blue','red'))+   
        coord_flip() +
        theme_bw() +
        theme(legend.position="none",aspect.ratio = asp)+
        ylab(xlab) +
        xlab(ylab) #switch because of the coord_flip() above
    return(p)
}

繪制你的例子

set.seed(123)
dat <- data.frame(x = rnorm(100),y = rnorm(100), z = rnorm(100))
mod1 <- lm(y ~ x + z, data = dat)
df <- df_plot_odds(mod1)
plot <- plot_odds(df)
plot

哪個產量

在此處輸入圖片說明

請注意,我選擇theme_wb()作為默認值。 輸出是一個ggplot2對象。 因此,您可能會對其進行很多更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM