ggplot将分组的条形图分成单独的条形(按y值降序排列)

时间:2019-01-06 14:47:09

标签: r ggplot2

# Create the dataset
library(tidyverse)
set.seed(0)
species = c(rep("sorgho", 3), rep("poacee", 3), rep("banana", 3), rep("tri", 3))
condition = rep(c("normal", "stress", "nitrogen"), 4)
value = abs(rnorm(12, 0, 15))
data = data.frame(species, condition, value)

#>    species condition       value
#> 1   sorgho    normal 18.94431427
#> 2   sorgho    stress  4.89350041
#> 3   sorgho  nitrogen 19.94698894
#> 4   poacee    normal 19.08643982
#> 5   poacee    stress  6.21962152
#> 6   poacee  nitrogen 23.09925063
#> 7   banana    normal 13.92850552
#> 8   banana    stress  4.42080670
#> 9   banana  nitrogen  0.08650759
#> 10     tri    normal 36.06980083
#> 11     tri    stress 11.45390192
#> 12     tri  nitrogen 11.98513873

使用上面的数据集,我可以使用以下代码创建分组的条形图:

ggplot(data, aes(x = reorder(species, -value), y = value, fill = condition)) + 
    geom_bar(position = "dodge", stat = "identity")

如何使每个单独的条按y值降序显示?它类似于一个长的pareto图表。 tri/normal将是第一个小节。 poacee/nitrogen将是第二个栏,依此类推。这就是我们现在正在使用的东西。

geombar

我可以通过将种类和条件简化为一个新变量,然后选择它作为我的x变量来实现。我希望有一个更简单的解决方案,也许可以在geom_bar()中添加一些参数。搜索?geom_bar()时找不到合适的参数。有可能吗?

[EDIT]-我的问题与this SO question不同。我的问题是要从头到尾对上面显示的所有单个条进行排序。另一个SO问题旨在仅对每个子组内的小节进行排名。

0 个答案:

没有答案