千家信息网

R语言中如何在数据可视化过程中调整因子顺序

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章将为大家详细讲解有关R语言中如何在数据可视化过程中调整因子顺序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实例操练这个例子使用的数据集为ti
千家信息网最后更新 2026年10月31日R语言中如何在数据可视化过程中调整因子顺序

这篇文章将为大家详细讲解有关R语言中如何在数据可视化过程中调整因子顺序,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

实例操练

这个例子使用的数据集为tidyverse包自带的数据集,大家可以使用?gss_cat查看相关变量,这儿不再赘述。

在数据可视化过程中改变因子顺序是一个经常性的操作,比如我们想看看不同religions的average number of hours spent watching TV per day有什么不同,我们可以用以下代码:

relig_summary <- gss_cat %>%   group_by(relig) %>%   summarise(     age = mean(age, na.rm = TRUE),     tvhours = mean(tvhours, na.rm = TRUE),     n = n()   )  ggplot(relig_summary, aes(tvhours, relig)) + geom_point()

运行代码得到输出的点图如下:

上面的这个点图其实很不好看,我们可能会觉得能不能把religions的顺序变一变,让有最小tvhours的religion在y轴的最下面,有最大tvhours的在最上面。

怎么做呢,需要用到fct_reorder()方法,这个方法取2个参数:

  • 第一个就是你想改变顺序的因子,本例中:religions

  • 第二个,改变顺序的参照物,本例中:tvhours

代码如下:

ggplot(relig_summary, aes(tvhours, fct_reorder(relig, tvhours))) +   geom_point()

可以看到,改变了religions的顺序后这个图就更加清晰明白了。

再看一个例子:

rincome_summary <- gss_cat %>%   group_by(rincome) %>%   summarise(     age = mean(age, na.rm = TRUE),     tvhours = mean(tvhours, na.rm = TRUE),     n = n()   )  ggplot(rincome_summary, aes(age, fct_reorder(rincome, age))) + geom_point()

上面的代码,可以画出按年龄排序后不同rincome和age的关系:

但是,问题出在按年龄排序后我们的收入(y轴)显得很乱,所以这个方法并不好,考虑到收入本来就是有顺序的,所以好的处理方法为保留收入的原始顺序,于是我们写出了如下代码:

rincome_summary <- gss_cat %>%   group_by(rincome) %>%   summarise(     age = mean(age, na.rm = TRUE),     tvhours = mean(tvhours, na.rm = TRUE),     n = n()   )  ggplot(rincome_summary, aes(age, rincome)) + geom_point()

这次再看我们的图,虽然其他的收入levels都排的挺好,但是我们不希望"Not applicable"排在第一。这个时候我们可以用fct_relevel(),它也有2个参数:

  • 需要排序的因子,本例中:rincome

  • 需要放在最前面的levels,本例中:Not applicable

代码如下:

ggplot(rincome_summary, aes(age, fct_relevel(rincome, "Not applicable"))) +   geom_point()

这一下,我们的图形就比较满意了。

再看一个例子:线图的颜色控制:

by_age <- gss_cat %>%   filter(!is.na(age)) %>%   count(age, marital) %>%   group_by(age) %>%   mutate(prop = n / sum(n))  ggplot(by_age, aes(age, prop, colour = marital)) +   geom_line(na.rm = TRUE)  ggplot(by_age, aes(age, prop, colour = fct_reorder2(marital, age, prop))) +   geom_line() +   labs(colour = "marital")

上面的代码画的是不同的年龄中婚姻状况的比例变化:

我们通过fct_reorder2实现了图例和x变量最大时y的值的顺序一致,可以更加明晰。

最后再看一个柱状图调整因子顺序的例子

下面的代码可以,正序逆序改变x轴标签:

  1. gss_cat %>%

  2. mutate(marital = marital %>% fct_infreq() ) %>%

  3. ggplot(aes(marital)) +

  4. geom_bar()

  5. gss_cat %>%

  6. mutate(marital = marital %>% fct_infreq() %>% fct_rev()) %>%

  7. ggplot(aes(marital)) +

  8. geom_bar()


大家可以在自己电脑上运行试试,关键就在于fct_rev()。

今天通过3个例子给大家介绍了可视化中因子顺序的改变,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。

关于R语言中如何在数据可视化过程中调整因子顺序就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

顺序 代码 因子 数据 例子 可视化 不同 收入 方法 面的 过程 调整 就是 年龄 排序 语言 最大 不好 内容 参数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 深圳九邦互联网科技有限公司 科技赋能下的互联网金融 鸠鸠互联网科技 杭州互联网科技公司 亿人帮互联网科技 中国最先进互联网科技公司 北京三清互联网科技 北京大学互联网科技怎么样 恒银科技与互联网金融 湖北码尼互联网科技有限公司电话 世界互联网科技公司市值排名 互联网科技公司有风险吗 互联网科技产业特征 中国互联网十大科技股排名 山东有哪些互联网科技公司 高科技互联网套路 互联网第三次科技革命特征 江苏苏星互联网科技有限公司 武汉亿视互联网科技有限公司 互联网 科技节活动 微视频大赛 今日互联网科技 科技服务与互联网 互联网科技公司的市场部门 博兴的互联网电子科技公司 互联网科技如何创业 梅州GM互联网络科技有限公司 吉林省码上互联网科技电话 互联网科技的前景 互联网科技大佬云集 前海云享互联网科技
0