直接从dplyr绘制条形图

时间:2019-12-23 18:49:16

标签: ggplot2 dplyr

我想问一下如何处理dplyr的ouptut,然后在ggplot中将其绘制为geom_bar

使用下面的代码将以图解形式给出,但是它没有正确的属性:

library(dplyr)
library(ggplot2)

mtcars %>% select(-cyl) %>% 
  group_by(gear) %>% 
  summarise(mean_hp = mean(hp), 
            median_hp = median(hp), 
            count = n()) %>% 
  gather() %>% 
  ggplot(aes(value)) + geom_bar() + 
  facet_wrap(~key, scales = "free")

1 个答案:

答案 0 :(得分:0)

您要在此同时设置xy的美观性:

mtcars %>% select(-cyl) %>% 
  group_by(gear) %>% 
  summarise(mean_hp = mean(hp), 
            median_hp = median(hp), 
            count = n()) %>% 
  gather() %>% 
  ggplot(aes(x=key, y=value)) + geom_col()

请注意,geom_col更适合您的情况,因为geom_bar用于直方图(条形的高度与每个组中的病例数成正比)。

您仍然可以使用构面,但是每个构面只有一个图,结果将不会那么漂亮。

再三考虑,看来您的榜样对我来说毫无意义。这会更有用吗?

mtcars %>% select(-cyl) %>% 
  group_by(gear) %>% 
  summarise(mean_hp = mean(hp), 
            median_hp = median(hp), 
            count = n()) %>% 
  pivot_longer(cols=c(mean_hp, median_hp)) %>% 
  ggplot(aes(x=name, y=value, fill=factor(gear))) + 
    geom_col(position = "dodge")

(此外,请尝试使用pivot_longerpivot_wider代替现在已不推荐使用的gatherspread