首页 > 解决方案 > 在 `geom_point` 中显示按其对应值(不是名称)排序的 `dplyr` 组

问题描述

使用mpg数据集,我想生成一个散点图,显示每个manufacturer点的分组(按manufacturer)平均值displ

到目前为止,以下工作:

ggplot(mpg %>% 
         group_by(manufacturer) %>% 
         summarise(mean_displ = mean(displ))) +
  geom_point(aes(x = manufacturer, y = mean_displ)) +
  guides(x = guide_axis(angle = 90))

在此处输入图像描述

现在我想根据它们的displ值按升序显示这些点。或者:我想manufacturer根据对应的mean_displ值对x轴上的变量进行排序。

我试图在我的链中插入一条arrange(mean_displ)语句。dplyr没有成功。

所以我引入了一个虚拟变量x来产生我想要的情节,但现在标签已经消失了..

ggplot(mpg %>% 
         group_by(manufacturer) %>% 
         summarise(mean_displ = mean(displ)) %>%
         arrange(mean_displ) %>%
         mutate(x = 1:15)) +
  geom_point(aes(x = x, y = mean_displ))

在此处输入图像描述

我怎样才能得到后面的情节,但要从上面贴上标签?

标签: rggplot2dplyr

解决方案


fct_reorderforcats包可以订购一个因素的水平。

library(tidyverse)

ggplot(mpg %>% 
         group_by(manufacturer) %>% 
         summarise(mean_displ = mean(displ))) +
  geom_point(aes(x = fct_reorder(manufacturer, mean_displ), y = mean_displ)) +
  guides(x = guide_axis(angle = 90))

阴谋


推荐阅读