ggplot2中更详细的可视化

时间:2019-08-07 14:37:50

标签: r ggplot2

道歉,如果这是一个基本问题,但我似乎找不到我想在线进行的操作的任何示例:我认为这可能是ggplot的“整洁”数据概念的问题。

无论如何,例如,我正在使用mtcars数据集,并希望可视化一种汽车的平均mpg,例如。本田,对比所有汽车的平均值。 ggplot使查看某个变量的 all 类别(即所有品牌的mgps)非常容易,但是似乎无法隔离某些兴趣点。这是真的?如果没有,我该怎么办?

我一直在浏览有关R中的可视化的教程,但未能找到人们以这种方式分解数据的示例。

因此,我确实没有要共享的建设性代码。

1 个答案:

答案 0 :(得分:0)

这是一个如何与其他dydyverse函数一起使用的示例。

1)在列中保存具有行名的mtcar版本,并将该列拆分为Make和Model。

2)使用dplyr::filter()dplyr::summarize()获取本田平均车灯。使用dplyr::bind_rows与总平均值相结合,以小标题显示要显示的数据。

3)(可选)使用forcats::fct_relevel进行重新排序,以将总计放在最后。例如,如果您选择了“沃尔沃”,它自然会按字母顺序显示在最后,而不是像本田那样显示在最前面。

4)绘制!

library(tidyverse)
my_mtcars <- mtcars %>%
  rownames_to_column() %>%
  separate(rowname, c("Make", "Model"), extra = "merge")


my_mtcars %>%
  # Avg for Honda
  group_by(Make) %>%
  summarize(mpg = mean(mpg)) %>%
  filter(Make == "Honda") %>%

  # Combine with total avg, and make "Total" show up last, regardless of alphabetical order
  bind_rows(my_mtcars %>% summarize(mpg = mean(mpg), Make = "Total")) %>%
  mutate(Make = fct_relevel(Make, "Total", after = Inf)) %>%

  ggplot(aes(Make, mpg, label = round(mpg, 1))) + 
  geom_col() +
  geom_text(vjust = 1.5, fontface = "bold", color = "white")

enter image description here