r - 如何在ggplot的aes_string中调用重新排序

标签 r ggplot2

我需要使用ggplot和aes_string()从高到低(从左到右)重新排列小节的顺序。例如对于数据帧df <-f(X,Y,Z)可以用

 ggplot(top10,aes(x=reorder(X,-Y),y=Y,fill=X) + geom_bar(stat="identity")

但是我需要通过引用数据框的列号而不是列名来实现此目标,如下所示
 ggplot(top10, aes_string(x=colnames(top10)[num1],y=meanFeat, 
 fill=colnames(top10)[num1])) +  geom_bar(stat="identity")

上面的语句使用列号绘制输出。但是,它不会从高到低(从左到右)重新排序

如何使用aes_string中的re-order函数来实现此目的?

最佳答案

由于aes_string适用于字符串,因此请使用paste:

ggplot(top10, aes_string(x=paste0("reorder(",colnames(top10)[num1],", -Y)"),y=meanFeat,
 fill=colnames(top10)[num1])) +  geom_bar(stat="identity")

关于r - 如何在ggplot的aes_string中调用重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43999317/

相关文章:

r - 谁能解释为什么创建具有两个条件的直方图显示 R 中的分布不正确?

r - 如何生成 Quiver Graph 和 Equilibria Graph?

r - data.table-选择组中的前n行

r - R中绘图标签的斜体后缀

r - 一起使用facet_grid和facet_wrap

r - 如何将 N、对数似然、AIC 和 BIC 值分配给合并的 `gtsummary` 表输出中的每个多元回归模型?

R:使用来自向量的列名创建空的 tibble/数据框

R Shiny ggplot 对 varSelectInput 有反应

r - 在使用 geom_abline 创建的线之间绘制带状图

r - 使用 ggplot 以置信区间绘制时间序列