r - 尝试在 R 中手动重新排序条形图
问题描述
我需要这张图表以不同的顺序显示条形图。
“预测试”栏必须是第一个。除了我的标签发生变化之外,什么也没有发生。真的很感激一些帮助!
只有当表格的顺序正确时,这项研究才有意义。
我一直在使用此代码尝试更改订单。
plot_data2 <- main_data %>%
dplyr::select(training_type,
pretest_result,
C1_reps,
C2_reps,
P1_reps,
P2_reps) %>%
drop_na(pretest_result) %>%
gather(test, reps, pretest_result, C1_reps, C2_reps, P1_reps, P2_reps) %>%
group_by(test, training_type) %>%
summarise(
mean = mean(reps),
lci = t.test(reps)$conf.int[[1]],
uci = t.test(reps)$conf.int[[2]]
) %>%
ungroup() %>%
mutate(test = factor(
test,
levels = c("pretest_result", "C1_reps", "C2_reps", "P1_reps", "P2_reps")
))
这是我的情节代码。
ggplot(plot_data2, aes(x=test, y = mean, fill = training_type)) +
geom_bar(stat="identity", position=position_dodge()) +
geom_errorbar(aes(ymin=lci, ymax=uci),
width=.2,
position=position_dodge(.9)) +
scale_y_continuous(breaks = c(5,1,2,3,4)) +
scale_x_discrete(labels = c("Pretest", "C1", "C2", "P1", "P2")) +
labs(x = "Test type", y = "Average repitions", fill = "Training type") +
theme_bw()
这是我的数据
main_data <- structure(
list(
Horse = c("Skori", "Raudhetta", "Emma", "Freyr",
"Nick", "Hilda", "Aleiga", "Sinfonia", "Saga", "Fengur", "Herkules",
"Rumur", "Gaia", "Frøya", "Fanta", "Lindus", "Betty", "Sjamina",
"Dimma", "Astrix", "Presley", "Odin", "Poineten", "Gåte", "Skori",
"Raudhetta", "Emma", "Freyr", "Nick", "Hilda", "Aleiga", "Sinfonia",
"Saga", "Fengur", "Herkules", "Rumur", "Gaia", "Frøya", "Fanta",
"Lindus", "Betty", "Sjamina", "Dimma", "Astrix", "Presley", "Odin",
"Poineten", "Gåte"),
C1_reps = c(5,
5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 5, 5, 6,
4, 5, 6, 6, 4, 5, 5, 5, 4, 5, 5, 4, 5, 6, 6, 5, 5, 5, 5, 6, 5,
4, 4, 5, 4, 5),
C2_reps = c(5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 6, 6, 5, 6, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
5, 5, 5, 5, 5, 5, 5, 5, 6, 5, 5, 6, 6, 6, 4, 5),
Compliance = c(3,
4, 4, 3, 3, 2, 1, 4, 4, 4, 3, 4, 1, 4, 1, 3, 3, 4, 4, 4, 3, 4,
1, 3, 4, 4, 4, 4, 3, 3, 4, 4, 4, 4, 4, 3, 4, 3, 4, 3, 4, 3, 4,
4, 4, 3, 4, 3),
P1_reps = c(5, 5, 4, 5, 5, 4, 3, 4, 6, 7, 7,
0, 4, 6, 3, 6, 7, 0, 7, 4, 4, 3, 6, 5, 1, 0, 1, 0, 1, 1, 0, 2,
1, 0, 0, 0, 1, 2, 1, 3, 0, 0, 0, 1, 1, 2, 2, 1),
P2_reps = c(NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 6, 6, 2, 6, 7, 4,
6, 5, 6, 4, 4, 6, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 0, 1, 1, 1, 0, 0, 0, 0, 0, 2, 1, 0),
Test.group = c(1, 1,
1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3),
training_type = c("PC", "PC", "PC", "PC", "PC",
"PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC",
"PC", "PC", "PC", "PC", "PC", "PC", "PC", "PC", "TT", "TT", "TT",
"TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT",
"TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT", "TT"),
pretest_result = c(NA, NA, NA, NA, NA, NA, NA, NA, NA, NA,
NA, NA, 3, 6, 2, 4, 0, 0, 3, 5, 4, 2, 9, 0, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, 6, 4, 2, 2, 1, 0, 5, 4, 6,
6, 16, 0)
), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-48L))
解决方案
条形顺序由因子水平的顺序决定。要重新排序条形图,您需要在第一次调用 mutate() 后添加类似以下内容来重新排序因子水平。按照您希望条形出现的顺序列出您的因子水平
mutate(test = forcats::fct_relevel(test, "pretest_result", "C1_reps", "C2_reps", "P1_reps", "P2_reps"))
推荐阅读
- python - Telegram Bot - 使用 Telepot 检查 Python 中的令牌是否真实
- apache - 如何在 ubuntu 18.04 上托管由 Hyperledger Fabric Composer Rest Server 创建的 REST API
- android - 房间分页库总是返回 null LiveData?
- spring - Resttemplate 在 GET 请求后挂起。经过多次测试,我怀疑标题,也许特别是内容长度
- orbeon - 如何在 Orbeon Forms CE 中设置动态数据下拉控件?
- javascript - 使用 jsPDF 和 Html2Canvas 将图像添加到 pdf
- javascript - 如何使用反应钩子清理 useEffect 中的 setInterval
- c++ - 如何使用由指向视频数据的指针创建的 cv::Mat imgbuf
- reactjs - 如何在 Input 标签中为 Bootstrap 滑块定义格式化程序函数?
- python - 批处理文件无法识别并运行第二个(下一个)命令