我想创建一个可视化图像,以有序堆积条形图显示600个教室的种族组成。 X是教室,会有600个垂直堆叠的横条,每个种族的百分比用不同的颜色表示。它将进行排序,以便您可以大致了解多少教室具有一定的组成。
问题是,我似乎找不到一种基于多个变量对x轴进行排序的方法(按种族1,种族2等排序)。
以下是我尝试过的可复制代码。
teacher <- c(rep("a", 6), rep("b", 10), rep("c", 6))
studentrace <- c(rep("blk", 3), rep("white", 6), rep("latinx", 3),
rep("blk", 7), rep("white", 3))
my.df <- data.frame(teacher, studentrace)
library(dplyr)
bars <- my.df %>%
group_by(teacher, studentrace) %>%
summarise(n=n()) %>%
mutate(percent=n/sum(n))
library(ggplot2)
ggplot(bars, aes(x=teacher, y=percent)) +
geom_col(aes(fill=studentrace))
#best solution so far, but won't sort using multiple variables
ggplot(bars, aes(x=reorder(teacher, PERCENTWHITE), y=percent)) +
geom_col(aes(fill=studentrace))
#where percent white is a variable I merged into my longform dataset
这是我得到的...但是我希望能够按x,y,z排序... (https://drive.google.com/file/d/1zDX5eRGZlo2vf33WNlz74ybWSuaxO8jp/view?usp=sharing)
谢谢!
答案 0 :(得分:0)
一种选择是使用函数gglot
直接在数据集中调用arrange()
之前要进行的排序(这样您可以根据几个变量进行排序),然后在从forçats库中aes()
绘制函数fct_inorder()
,以保持与数据集中的顺序相同。