gpt4 book ai didi

r - 如何使用 ggplot 通过第三个分组变量对散点图中的离散变量进行排序?

转载 作者:行者123 更新时间:2023-12-05 08:40:10 25 4
gpt4 key购买 nike

最小可重现示例:

我有以下简单数据表(用dput()生成):

data <- structure(list(study = c("Brennan (2009)", "Farabee (2010)", 
"Fass (2008)", "Mills (2007)", "Fass (2008)", "Howard (2013)",
"Latessa (2017)", "Lovins (2018)", "Lowenkamp (2015)", "Allan (2006)",
"Endrass (2009)", "Looman (2006)", "Retterberg (2006)", "Sreenivasan (2007)"),
year = c(2009, 2010, 2008, 2007, 2008, 2013, 2017, 2018, 2015,
2006, 2009, 2006, 2006, 2007),
tool = structure(c(1L, 1L, 1L,
2L, 3L, 4L, 5L, 5L, 6L, 7L, 7L, 7L, 7L, 7L),
.Label = c("COMPAS",
"HCR-20", "LSI-R", "OASys", "ORAS", "PCRA", "Static-99"), class = "factor"),
auc = c(0.66, 0.7, 0.53, 0.72, 0.6, 0.72, 0.6, 0.66, 0.73,
0.78, 0.76, 0.63, 0.74, 0.62)),
row.names = c(NA, -14L), .Names = c("study",
"year", "tool", "auc"),
class = c("tbl_df", "tbl", "data.frame"
))

问题:

我想在散点图中显示数据,y 轴为“study”,x 轴为“auc”。我还想按“工具”对数据进行分组(即,以不同颜色显示每个工具)。尽管一切正常,但我无法通过分组变量“工具”对我的离散 y 轴进行排序(请参见下面的示例)。

示例:

library(dplyr)
library(ggplot2)
###################

arrange(data, tool, study, year) %>%
ggplot(aes(x = auc, y = study)) +
geom_point(aes(color = tool), size = 4)

Example plot

如您所见,每个点的顺序由“study”定义。但是,我希望由“工具”定义顺序,以便所有具有相同颜色的点都在彼此的下方。我已经阅读了一些关于 reorder()rev() 的 stackoverflow 帖子,但没有发现它们对我的特定问题有帮助,因为它们没有按第三组排序数据变量。

任何帮助将不胜感激,

马蒂亚斯

最佳答案

重新排序:

data %>% mutate(study=reorder(study, as.numeric(tool))) %>% 
ggplot(aes(x = auc, y = study)) +
geom_point(aes(color = tool), size = 4)

说明:使用 reorder 将研究转换为一个因素,从而在 ggplot 上强制执行特定顺序。顺序由 as.numeric(tool) 给出。我们必须将其转换为数值向量,因为 tool 不是有序因子。

enter image description here

关于r - 如何使用 ggplot 通过第三个分组变量对散点图中的离散变量进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57009110/

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