我四处寻找并发现 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())
产品:
我希望 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())
关于r - ggplot barplot 根据两个类别的行的最大值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41913183/