重量条形图

时间:2019-06-02 01:25:56

标签: r ggplot2

使用weight为每个b计算a的总和时如何订购条形图?

我还尝试了Ordering graph by weight value中的+scale_x_discrete(limits = data$b),但没有运行(pic2)。

data
   a b
1  A 1
2  B 2
3  A 3
4  B 1
5  C 2
6  A 3
7  B 4
8  B 5
9  B 1
10 C 1

ggplot(data,aes(a,weight=b)) + geom_bar()

enter image description here

ggplot(data,aes(a,weight=b)) + geom_bar() + scale_x_discrete(limits = data$b)
  

警告消息:删除了包含非限定值的10行   (stat_count)。

enter image description here

数据:

a <- c("A","B","A","B","C","A","B","B","B","C")
b <- c(2,3,4,2,3,4,5,6,2,2)
data <- cbind(a,b)
data <- as.data.frame(data)
data$b <- as.numeric(data$b)

1 个答案:

答案 0 :(得分:0)

这是一种使用dplyrforcats的方法来获取每个a的总加权计数,并将其作为基于该总数的因子进行重新排序。

library(dplyr)
data %>%
  add_count(a, wt = b) %>%
  mutate(a = forcats::fct_reorder(a, -n)) %>%
  ggplot(aes(a, n)) + 
  geom_col()  # equivalent to geom_bar(stat = "identity")

enter image description here