r - ggplot barplot 根据两个类别的行的最大值进行排序

标签 r sorting ggplot2 bar-chart

我四处寻找并发现 cases similar to mine ,但我找不到以下问题的有效解决方案。

我有一个像这样的数据框:

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

我想用 ggplot 创建一个躲避条形图。 X 轴应为名称,y 轴应为值,fill=measure_type 并且躲避的条形根据measure_type=n1 的最高值排序。 最后一个功能(粗体)是我正在努力解决的问题。我根本不知道如何制作它。

到目前为止我的代码:

plot <- ggplot(df, aes(x = name, y = value, fill = measure_type)) + geom_bar(stat = "identity", position=position_dodge())

产品:

enter image description here

我希望 n1 的最小值确定闪避条形图的顺序。

感谢您的帮助。

最佳答案

您可以按value排序,然后将name的顺序设置为name对于measure_type==的排序顺序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())

enter image description here

关于r - ggplot barplot 根据两个类别的行的最大值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913183/

相关文章:

r - 是否有 R 函数用于返回向量的任何值的排序索引?

python - PySpark - sortByKey() 方法以原始顺序从 k,v 对返回值

r - 在ggplot2之上覆盖基本R图形

r - 如何在 R 中正确使用 summarise 来进行这个简单的分析?

R:启动网络浏览器

r - 函数总是给我一个尾随的 `NULL`

r - 在 Shiny 模块中使用模态窗口

java - 按 Json Object 中的一些字段排序

r - R ggplot geom.tile 函数中手动选择 bin 大小?

r - 将数据框中的每个 x 个字符拆分为字符串