ggplot2 画图 X 轴排序问题

实际使用ggplot2画柱状体时,遇到x轴排序问题。本文描述问题及其解决过程。

data(tips, package = "reshape2")

library(tidyverse)
library(scales)  # for percentage scales

tips %>% count(day) %>% 
  mutate(perc = n / nrow(tips)) -> tips2
ggplot(tips2, aes(x = day, y = perc)) + geom_bar(stat = "identity")

在这里插入图片描述

图形画出来了,但x轴的顺序不对。原来ggplot2的排序有一定规则:

  • 如果是factor类型,则使用factor的level属性作为排序依据
  • 如果是character类型,则按照字母顺序

显然上面因为days是字符串,默认按照字母顺序。下面我们修改days为factor类型。

tips2$day <- factor(tips2$day,levels = c("Thur", "Fri", "Sat", "Sun"))
ggplot(tips2, aes(x = day, y = perc)) + geom_bar(stat = "identity")

在这里插入图片描述

有时我们并不满足x轴按照factor排序,假设需要按照频率排序,最频繁的序列排在最前面,实现方式如下:

ggplot(tips2, aes(x = reorder(day, -perc), y = perc)) + geom_bar(stat = "identity")

在这里插入图片描述

注意,上面代码中的负号表示降序。

  • 9
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
回答: 如果你想改变ggplot2中x上分类变量的顺序,可以使用`factor`函数来指定变量的顺序。例如,你可以使用`factor`函数将`Species`变量按照你想要的顺序重新编码,然后在ggplot函数中使用这个重新编码后的变量。下面是一个例子: ```R # 载入ggplot2 library(ggplot2) # 使用iris数据集做一个箱形图 ggplot(iris, aes(factor(Species, levels = c("versicolor", "setosa", "virginica")), Sepal.Length)) + geom_boxplot() ``` 在这个例子中,我们使用`factor`函数将`Species`变量按照"versicolor","setosa","virginica"的顺序重新编码,并在ggplot函数中使用这个重新编码后的变量作为x。这样就可以改变x上分类变量的顺序了。\[1\] #### 引用[.reference_title] - *1* [ggplot2设置坐标范围_R语言画展ggplot2篇:如何改变分类变量坐标的顺序?](https://blog.csdn.net/weixin_39945816/article/details/109920021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ggplot2 画图 X 排序问题](https://blog.csdn.net/neweastsun/article/details/121801992)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [R语言ggplot2x顺序设置自定义颜色](https://blog.csdn.net/xspyzm/article/details/76022889)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值