如何在R中订购堆积的条形图?

时间:2017-05-19 12:11:46

标签: r plot bar-chart

我无法找到这个问题的答案,所以我发布了它。

我有一个堆叠的posts,用于比较数据中不同值的出现次数

现在,我想以降序排序,从最大的组合值开始。我尝试使用我用于普通条形图的方法:

barplot(combined[order(combined, decreasing = T)],
    horiz = T,
    las=1,
    xlim = c(0,60),
    col = c('lightblue','darkblue'))

但它会产生一个barplot

的条形图

有没有办法正确订购?我已经看过ggplot的一些解决方案,但如果可能的话,我更喜欢坚持标准的条形图。

谢谢!

2 个答案:

答案 0 :(得分:1)

您的问题是您在barplot()函数中使用了矩阵。当您使用订单并计算combined[order(combined, decreasing=T)]时,结果是一个向量。如果您想要在不考虑哪种颜色优先级的情况下订购列,可以使用以下代码:

barplot(combined[,order(apply(combined, 2, max))])

这样做是将函数max()应用于矩阵的列(边距2,边距1将是行)。然后,您将按每列的最大值排序矩阵。

答案 1 :(得分:0)

我使用以下示例来解释方法

num <- c(1, 8, 4, 3, 6, 7, 5, 2, 11, 3)
cat <- c(letters[1:10])
data <- data.frame(num, cat)

现在,按降序生成条形图

barplot(data[order(data[,1],decreasing=FALSE),][,1],names.arg=data[order(data[,1],decreasing=FALSE),][,2], horiz = TRUE)

enter image description here

希望这个例子有所帮助。