ggplot2柱状图X轴顺序异常:>100前置问题求助
解决ggplot2柱状图X轴区间顺序异常问题
问题出在你的Average.Coverage.of.Study列是字符类型,ggplot默认按字符的字典序排序,而">"的字符优先级比数字低,所以">100"会排在最左侧。以下是两种简单的解决方法:
方法1:手动指定因子水平顺序
先定义好所有区间的正确顺序,再把列转换为因子类型:
# 按你需要的顺序列出所有区间 order_levels <- c("0-10", "11-20", "21-30", "31-40", "41-50", "51-60", "61-70", "71-80", "81-90", "91-100", ">100") # 将列转换为因子,强制使用指定的顺序 figure1_data$Average.Coverage.of.Study <- factor(figure1_data$Average.Coverage.of.Study, levels = order_levels) # 重新绘图 ggplot(data=figure1_data, aes(x=Average.Coverage.of.Study, y=Number.of.Studies)) + geom_bar(stat = "Identity")
方法2:按数据中区间的出现顺序排序(适合已按正确顺序录入数据的情况)
如果你的数据里区间本来就是按0-10到>100的顺序录入的,可以用forcats包的fct_inorder函数快速设置顺序(forcats是tidyverse的一部分,先确保已安装):
# 安装并加载tidyverse(如果还没装) # install.packages("tidyverse") library(tidyverse) # 将列转换为因子,按数据中出现的顺序排序 figure1_data$Average.Coverage.of.Study <- fct_inorder(figure1_data$Average.Coverage.of.Study) # 重新绘图 ggplot(data=figure1_data, aes(x=Average.Coverage.of.Study, y=Number.of.Studies)) + geom_bar(stat = "Identity")
转换为因子后,ggplot就会严格按照你设定的顺序排列X轴,">100"就能显示在最右侧了。
内容的提问来源于stack exchange,提问作者Aman Garg
相关产品推荐
相关产品推荐

