gpt4 book ai didi

r - 更改 ggplot 中模型的顺序(点须)

转载 作者:行者123 更新时间:2023-12-02 04:28:40 25 4
gpt4 key购买 nike

据我所知,有许多线程处理 ggplot 中的图例或因素的顺序。但是,我没有找到有关如何更改单个图中多个模型顺序的建议。 Solt & Hu 的 dotwhisker-package 为他们的图集成了 ggplot。

library(dotwhisker)
library(broom)
library(dplyr)

m1 <- lm(mpg ~ wt + cyl + disp + gear, data = mtcars)
m2 <- update(m1, . ~ . + hp)
m3 <- update(m2, . ~ . + am)

threeM <- rbind(tidy(m1) %>% mutate(model = "M1"),
tidy(m2) %>% mutate(model = "M2"),
tidy(m3) %>% mutate(model = "M3"))

dwplot(threeM) +
theme(legend.title=element_blank(), panel.background = element_rect(fill = "white"),
panel.grid.major.x = element_line(colour="grey"))

情节是这样的:
https://imgur.com/JkUcy7t

此图的问题在于模型 3 的系数和 CI(应该是最后显示的值)在每行中首先显示。

我希望每行中的系数按时间顺序显示。即,M1系数+CI高于M2系数+CI。并且M2系数+CI高于M3系数+CI。更简单地说:红线应该在绿线之上,绿线应该在蓝线之上。

使用模型作为因子并没有被证明是有用的。
threeM$model <- factor (threeM$model, levels = c("M1","M2","M3"), labels = c("M1","M2","M3"))

您知道如何在每一行中按时间顺序显示模型吗?我希望你明白我的意思,我提前感谢你。

注意:我改编了这里的例子: https://cran.r-project.org/web/packages/dotwhisker/vignettes/dotwhisker-vignette.html .

最佳答案

这有效:

threeM <- bind_rows(
tidy(m1) %>% mutate(model = "M1"),
tidy(m2) %>% mutate(model = "M2"),
tidy(m3) %>% mutate(model = "M3")) %>% arrange(desc(model))

threeM$model <- factor (threeM$model,
levels = c("M1","M2","M3"),
labels = c("M1","M2","M3"))

dwplot(threeM) +
theme(legend.title=element_blank(),
panel.background = element_rect(fill = "white"),
panel.grid.major.x = element_line(colour="grey")) +
scale_color_brewer(palette="Set1",
breaks=c("M1","M2","M3"))

解释:

图中的模型从下到上排序。我通过按降序对它们进行排序并确保它们的因子水平按这种方式排序来改变这一点: %>% arrange(desc(model)) threeM$model <- factor (threeM$model)图例上的模型从上到下排序。这可以更改定义中断: scale_color_brewer(palette="Set1", breaks=c("M1","M2","M3"))

关于r - 更改 ggplot 中模型的顺序(点须),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51029746/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com