【问题标题】:How do I sort bar chart by value with R ggplot? [duplicate]如何使用 R ggplot 按值对条形图进行排序? [复制]
【发布时间】: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)

标签: r ggplot2


【解决方案1】:
  ggplot(assets, aes(reorder(Currency, -Value, sum), Value)) +
  geom_col()

【讨论】:

  • 默认情况下,reorder 基于观察的mean 工作。如果要按条形总高度排序,需要显式设置函数为sum
  • 你是对的。我编辑以反映这一点
猜你喜欢
  • 2022-08-23
  • 2018-04-18
  • 2013-02-12
  • 2014-10-02
  • 1970-01-01
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
相关资源
最近更新 更多