R ggplot根据两类行的最大值绘制条形图顺序

R ggplot根据两类行的最大值绘制条形图顺序,r,sorting,ggplot2,bar-chart,R,Sorting,Ggplot2,Bar Chart,我到处找了找,找到了 ,但我无法找到以下问题的有效解决方案 我有这样一个数据帧: df <- data.frame(name = rep(c("a","b","c"), each=2), measure_type = rep(c("n1","n2"),3), value=c(20,1,3,3,17,9)) > df name measure_type value 1

我到处找了找,找到了 ,但我无法找到以下问题的有效解决方案

我有这样一个数据帧:

df <- data.frame(name = rep(c("a","b","c"), each=2), measure_type = rep(c("n1","n2"),3), value=c(20,1,3,3,17,9))


> df
    name measure_type value
  1    a           n1    20
  2    a           n2     1
  3    b           n1     3
  4    b           n2     3
  5    c           n1    17
  6    c           n2     9
产生:

我想用n1的最小值来确定减淡条形图的顺序


谢谢您的帮助。

您可以按
值进行排序,然后将
名称的排序顺序设置为
名称的排序顺序
度量值类型==“n1”
。这一切都可以使用
dplyr
管道动态完成:

library(dplyr)

ggplot(df %>% arrange(value) %>% 
         mutate(name=factor(name, levels=name[measure_type=="n1"])), 
       aes(x = name, y = value, fill = measure_type)) + 
  geom_bar(stat = "identity", position=position_dodge())

为了澄清,您希望您的x轴被安排为:B C A?是的,没错,但我的原始数据有三个以上的“名称”。
library(dplyr)

ggplot(df %>% arrange(value) %>% 
         mutate(name=factor(name, levels=name[measure_type=="n1"])), 
       aes(x = name, y = value, fill = measure_type)) + 
  geom_bar(stat = "identity", position=position_dodge())