如何使用 R ggplot 按值对条形图进行排序? [复制]

Posted

技术标签:

【中文标题】如何使用 R ggplot 按值对条形图进行排序? [复制]【英文标题】:How do I sort bar chart by value with R ggplot? [duplicate] 【发布时间】:2017-09-09 21:19:03 【问题描述】:

这是我的简单资产数据集:

ID  Type    Currency    Value
a   Bond    GBP         10
b   Bond    EUR         20
c   Stock   GBP         3
d   Stock   GBP         60
e   Bond    GBP         8
f   Bond    USD         39
g   Stock   USD         1

代码如下:

 assets <- read_excel("C:/R/SampleData.xlsx")
 g <- ggplot(assets, aes(Currency, Value))
 g + geom_col()

这是我得到的情节:

我正在尝试创建相同的图,但条形按值排序(按降序排列) 我如何实现这一目标? 我尝试了以下代码:

assets$Currency <- factor(assets$Currency, levels = assets$Currency[order(assets$Value)])

但我收到以下警告消息,图表仍未正确排序:

Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL) as.character(labels) else paste0(labels,  :
duplicated levels in factors are deprecated

谢谢!

【问题讨论】:

使用assets$Currency &lt;- reorder(assets$Currency, assets$Value, sum) 【参考方案1】:
  ggplot(assets, aes(reorder(Currency, -Value, sum), Value)) +
  geom_col()

【讨论】:

默认情况下,reorder 基于观察的mean 工作。如果要按条形总高度排序,需要显式设置函数为sum 你是对的。我编辑以反映这一点

以上是关于如何使用 R ggplot 按值对条形图进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

按值重新排序 geom_bar ggplot2 中的条形图

按值重新排序 geom_bar ggplot2 中的条形图

按值重新排序 geom_bar ggplot2 中的条形图

R语言可视化包ggplot2绘制排序条形图实战:按照分类因子排序按照数值排序

按“填充”变量ggplot中的值排序 - 条形图R

R语言ggplot2可视化整体排序的水平堆叠条形图(Ordered Stacked Horizontal Barplot)