gpt4 book ai didi

r - 在组内排序的 Lollipop 图

转载 作者:行者123 更新时间:2023-12-04 04:11:46 26 4
gpt4 key购买 nike

我正在尝试使用如下所示的数据集创建 Lollipop 图:

set.seed(123)
example_df <- data.frame(strategy = as.factor(rep(LETTERS[1:5], each = 2)),
mt_equip = as.factor(rep(c('r', 'v'), times = 5)),
cc = as.factor(c('cc', 'cc', 'no_cc', 'no_cc', 'part_cc', 'part_cc', 'cc', 'cc', 'no_cc', 'no_cc')),
vt = as.factor(c(rep('d10', 4), rep('d1+d10', 2), rep('d1', 4))),
model_ouput = rnorm(10)
)
example_df
strategy mt_equip cc vt model_ouput
1 A r cc d10 -0.56047565
2 A v cc d10 -0.23017749
3 B r no_cc d10 1.55870831
4 B v no_cc d10 0.07050839
5 C r part_cc d1+d10 0.12928774
6 C v part_cc d1+d10 1.71506499
7 D r cc d1 0.46091621
8 D v cc d1 -1.26506123
9 E r no_cc d1 -0.68685285
10 E v no_cc d1 -0.44566197

我的目标是制作一个 Lollipop 图以便:

  1. 它们按 cc 分组和着色,以 mt_equip 作为 shape 规范。
  2. 在每个 cc 类别中, Lollipop 从最低到最高排序。
  3. Lollipop 应该分开,不要像图中那样缠在一起。

我尝试了 ggalt 包中的 geom_lollipop() 选项,如下所示:

library(ggalt)

option2 <- ggplot(data = example_df,
aes(x = reorder(cc, model_ouput))) +
geom_lollipop(aes(y = model_ouput,
shape = mt_equip,
color = cc),
size = 5) +
scale_shape_manual(values = c(21, 24))
plot(option2)

这是我得到的:

enter image description here

我怎样才能:

  1. 解开 Lollipop ,使每个 Lollipop 都独立于 cc 组中?
  2. 将 (1) 中解开的 Lollipop 从低到高排序?我试过 reorder 但没有产生如图所示的设计效果。
  3. 将条形图制作成空心的,以便进行颜色和描边的后期处理?

感谢您的帮助。

最佳答案

根据@GregorThomas 的一些提示,我终于用以下代码解决了这个问题:

library(ggalt)
library(dplyr)
library(tidyr)

set.seed(123)
example_df <- data.frame(strategy = as.factor(rep(LETTERS[1:5], each = 2)),
mt_equip = as.factor(rep(c('r', 'v'), times = 5)),
cc = as.factor(c('cc', 'cc', 'no_cc', 'no_cc', 'part_cc', 'part_cc', 'cc', 'cc', 'no_cc', 'no_cc')),
vt = as.factor(c(rep('d10', 4), rep('d1+d10', 2), rep('d1', 4))),
model_ouput = rnorm(10)
)



#the strategy variable is not unique so we make it so but combining two cols
example_df_mod <- example_df %>%
unite(col = 'strategy', c(strategy, mt_equip), remove = F)

#make lollipop plot grouped by cc and sorted within each group
option2 <- example_df_mod %>%
group_by(cc) %>%
arrange(model_ouput, .by_group = T) %>%
ggplot(aes(group = cc)) +
geom_lollipop(aes(x = order(cc, model_ouput),
y = model_ouput,
shape = mt_equip,
color = cc),
size = 5)
plot(option2)

enter image description here

关于r - 在组内排序的 Lollipop 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61602311/

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