如何在R中排列堆叠条形图?

如何在R中排列堆叠条形图?,r,plot,bar-chart,R,Plot,Bar Chart,我找不到这个问题的答案,所以我正在发布它 我有一个堆栈,用于比较数据中不同值的出现情况 现在,我想按降序排序,从最大的组合值开始。我尝试使用我用于正常条形图的方法: barplot(combined[order(combined, decreasing = T)], horiz = T, las=1, xlim = c(0,60), col = c('lightblue','darkblue')) 但它产生了一个条形图 有什么方法可以正确订购吗?我见过一些使用g

我找不到这个问题的答案,所以我正在发布它

我有一个堆栈,用于比较数据中不同值的出现情况

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

barplot(combined[order(combined, decreasing = T)],
    horiz = T,
    las=1,
    xlim = c(0,60),
    col = c('lightblue','darkblue'))
但它产生了一个条形图

有什么方法可以正确订购吗?我见过一些使用ggplot的解决方案,但如果可能的话,我更喜欢使用标准条形图


谢谢

您的问题是在
barplot()函数中使用了矩阵。当您使用顺序并计算组合[顺序(组合,递减=T)]
时,结果是一个向量。如果您想在不考虑哪种颜色优先的情况下对列进行排序,可以使用以下代码:

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

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

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

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)