道歉,如果这是一个基本问题,但我似乎找不到我想在线进行的操作的任何示例:我认为这可能是ggplot的“整洁”数据概念的问题。
无论如何,例如,我正在使用mtcars数据集,并希望可视化一种汽车的平均mpg,例如。本田,对比所有汽车的平均值。 ggplot使查看某个变量的 all 类别(即所有品牌的mgps)非常容易,但是似乎无法隔离某些兴趣点。这是真的?如果没有,我该怎么办?
我一直在浏览有关R中的可视化的教程,但未能找到人们以这种方式分解数据的示例。
因此,我确实没有要共享的建设性代码。
答案 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")