R 根据一个变量的值在堆叠条形图中排列堆栈

R 根据一个变量的值在堆叠条形图中排列堆栈,r,ggplot2,graph,R,Ggplot2,Graph,我正在尝试编写一个函数,该函数在末尾输出一个堆叠条形图,其中堆叠条形图的条形图从一个特定变量的最大百分比排列到最小百分比。我还没有找到一个通用的方法来实现这一点,我的最终目标是以一种需要最少人力投入的方式完成这一过程 我的数据是这样的 Swimming_style Comfort_level_label Comfort_level_scale n Total_n Percentage Front Crawl Excellent

我正在尝试编写一个函数,该函数在末尾输出一个堆叠条形图,其中堆叠条形图的条形图从一个特定变量的最大百分比排列到最小百分比。我还没有找到一个通用的方法来实现这一点,我的最终目标是以一种需要最少人力投入的方式完成这一过程

我的数据是这样的

 Swimming_style     Comfort_level_label    Comfort_level_scale    n     Total_n       Percentage 
 Front Crawl        Excellent              3                     7       10          70                     
 Front Crawl        Good                   2                     3       10          30
 Backstroke         Excellent              3                     4       10          40
 Backstroke         Good                   2                     4       10          40
 Backstroke         Fair                   1                     1       10          10
 Backstroke         Poor                   0                     1       10          10
 Brest stroke       Excellent              3                     6       10          60
 Brest stroke       Fair                   1                     4       10          40
 Butterfly          Good                   2                     7       10          70
 Butterfly          Fair                   1                     1       10          10
 Butterfly          Poor                   0                     2       10          20
到目前为止,这是我的代码:

 data <- arrange(data, Comfort_level_label, (Percentage))
 data$Swimming_style <- factor(data$Swimming_style, levels = unique(data$Swimming_style))



 ggplot(data, aes( x = Swimming_style, y = n, fill = Comfort_level_label)) + 
      geom_bar(position = "fill",stat = "identity") + 
      scale_y_continuous(labels = scales::percent_format())+
     coord_flip()

数据它可能有点含糊不清,但在确定优先级时,重要的一点是确保每个因素都有一个

库(dplyr)
SS%
排列(-Comfort_level_scale,-n)%>%
组别(游泳风格)%>%
切片(1)%>%
解组()%>%
排列(舒适度水平刻度,n)%>%
拉力(游泳式)
图书馆(GG2)
dat%>%
变异(游泳风格=因子(游泳风格,级别=SS))%>%
ggplot(aes(x=游泳风格,y=n,填充=舒适度水平标签))+
几何图形栏(position=“fill”,stat=“identity”)+
比例是连续的(标签=比例::百分比格式()+
coord_flip()

顺便说一句:
Brest-stroke
应该是
Brest-stroke


库(dplyr)
dat%
变异(游动风格=gsub(“,”,游动风格))

几乎所有询问“…ggplot2…顺序…”的问题都会用
因子回答。您正在创建
因子
,但您给它一个任意顺序(使用
levels=
参数)。把顺序改成你想要的。是的,应该是蛙泳。如果我读对了你的代码,它是根据游泳风格安排的。如果我将因子级别设置为优秀、优秀、一般和差的列表,然后使用该列表来确定堆叠条形图的顺序,我需要做什么?玩变异字符串?
因子
级别应该是风格,而不是舒适度级别标签
。您已经有了
舒适度\u等级\u等级
,因此您的优先顺序已经包括在内。这张图是否像你预期的那样直观有序?这张图看起来很完美。谢谢你的帮助。我只需要复习一些东西来确保我理解它们。