r - 使用预测重新排序组,但重新排列单个组的位置
问题描述
我有一个包含二十多个组的箱线图(它仍然可能会改变),我使用它重新排序fct_reorder
;我想将一组(控制组)放在某个位置(第一个或最后一个),以将其与质量分开。
有没有一种简单的方法可以做到这一点,而不使用手动定义的顺序(因为可能我们添加了额外的组/数据,我们必须再次更改)?
library(dplyr)
library(ggplot2)
library(forcats)
data_CK <- CKRF %>%
select(CK, Group) %>%
mutate(Group = factor(Group, order = TRUE, labels = c("Neurologische Erkrankungen", "Arterielle Thromboembolie", "Kardiologische Erkrankungen", "Atemwegserkrankungen",
"Pleuraerguss", "Nephropathien", "Probleme der Ableitende Harnwege", "Gastro-Intestinal Erkrankungen", "Leber/Pankreas",
"Endokrinologische Erkrankugen", "Neoplasie", "Anämie", "Ophtalmologische Erkrankungen", "Dermatologische Erkrankungen",
"Gynäkologische Erkrankungen", "Bewegapparat Probleme", "Anorexie", "Kontrollgruppe",
"Trauma", "Fieber Unbekannter Ursache")))
ggplot(data_CK, aes(x = fct_reorder(Group,CK), y = CK)) +
geom_boxplot(outlier.size = 0.2) +
#coord_trans(y = 'log10') +
scale_y_continuous(trans = "log10", breaks = c(350,1000, 5000, 10000, 50000, 1000000)) +
coord_flip() +
#geom_point(size = 0.5) +
labs(y = 'CK (IU/L)', x = 'Erkrankungen') +
theme_minimal() +
theme(legend.position = "none", axis.text.x = element_text(angle = 90, hjust = 1))
解决方案
这与您的顺序有关 factor levels
。使用relevel
(方便在公式中使用)或factor(., levels=)
. 示例(使用基图):
op <- par(mfrow=c(1, 3))
with(iris, boxplot(Petal.Length ~ Species)) ## original order
with(iris, boxplot(Petal.Length ~ relevel(Species, ref="virginica"))) ## virginica first (re)level
## custom order levels (set "virginica" so that it appears last)
iris2 <- transform(iris,
Species=factor(iris$Species,
levels=c("versicolor", "setosa", "virginica")))
with(iris2, boxplot(Petal.Length ~ Species))
par(op)
注意:确保不要levels
与labels
;混淆。在您的情况下,它们应该匹配。
推荐阅读
- python - 是否可以使用 pyTorch 创建 FIFO 队列?
- python - 集群后,我如何从顶级集群中选择最佳客户(子集)?
- c++ - 置换 set 的第一个元素
- c# - 访问允许从 NUnit 中的上下文 PropertyBag 内部多次使用的自定义属性值
- java - 在领事中注册服务,但现在显示很关键
- oracle - oracle控制文件和undo数据库文件被删除了,有没有办法找回来?
- optimization - 运行大量密码的有效方法是什么?
- asp.net-core - EF Core 显式忽略关系
- go - net.Listen 和 http.ListenAndServe 功能的区别
- python - 由于我想在句子中添加整数,如何获得没有括号或括号的输出?