r - 对条形图列进行排序 ggplot

标签 r sorting bar-chart ggplot2

我有这个 R 代码代码来生成以下条形图:

d <- data.frame(case = c(1,2,3,4), 
                var=c('foo', 'foo', 'foo', 'foo','bar', 'bar', 'bar', 'bar'), 
                val=c(9,2,2,4,6,1,2,3))
d$var <- as.factor(d$var)
d$case <- as.factor(d$case)
ggplot(d, aes(x = case, y = val, fill = var)) + scale_x_discrete() + geom_bar(position="dodge")

enter image description here

如何按“bar”的值对条形进行排序?

免责声明:这可能与 https://stackoverflow.com/questions/10746342/sorting-ggplot2-box-plot-by-2-columns 重复但这没有得到回答,所以......

最佳答案

使用 order获取按 bar 的值排序的列并将其复制到 foo以及。然后将此列用于 x .

d$case <- match(d$val[d$var == "bar"], sort(d$val[d$var == "bar"]))
d$case <- factor(d$case, levels=1:4)
# now use this:
ggplot(d, aes(x = case, y = val, fill = var)) +  
         geom_bar(position="dodge", stat="identity")

(或等效)
 ggplot(d, aes( x= order, fill = var)) + geom_bar(aes(weights=val), position="dodge")

enter image description here

关于r - 对条形图列进行排序 ggplot,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15094460/

相关文章:

r - 使用 geom_segment 在 ggplot 中绘制 'type = b' - 调整轴比参数

R : High frequency data statistical analysis

r - 在一张图中绘制多个箱线图

php - 如何在php/mysql中根据列高效打印数据库排序中的名称?

c# - 按另一个字符串列表对字符串列表进行排序

java - 条形图中的动态数据无法正常工作javaFX

android - Charts_flutter - 如何支持具有多个堆栈的条形图中的非零 Y 轴值?

r - 将 select_helpers 与 dplyr::coalesce 一起使用

java - Java如何对数据集进行排序

charts - 有人可以帮我使用谷歌图表创建一个简单的垂直条形图吗?