[英]Change colors of select lines in ggplot2 coefficient plot in R
我認為,您不能使用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.