# 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
将是第二个栏,依此类推。这就是我们现在正在使用的东西。
我可以通过将种类和条件简化为一个新变量,然后选择它作为我的x变量来实现。我希望有一个更简单的解决方案,也许可以在geom_bar()
中添加一些参数。搜索?geom_bar()
时找不到合适的参数。有可能吗?
[EDIT]-我的问题与this SO question不同。我的问题是要从头到尾对上面显示的所有单个条进行排序。另一个SO问题旨在仅对每个子组内的小节进行排名。