如何使用 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 <- reorder(assets$Currency, assets$Value, sum)
【参考方案1】:
ggplot(assets, aes(reorder(Currency, -Value, sum), Value)) +
geom_col()
【讨论】:
默认情况下,reorder
基于观察的mean
工作。如果要按条形总高度排序,需要显式设置函数为sum
你是对的。我编辑以反映这一点以上是关于如何使用 R ggplot 按值对条形图进行排序? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
R语言可视化包ggplot2绘制排序条形图实战:按照分类因子排序按照数值排序
R语言ggplot2可视化整体排序的水平堆叠条形图(Ordered Stacked Horizontal Barplot)