ggplot2 按第 80 个百分位重新排列我的箱线图
Posted
技术标签:
【中文标题】ggplot2 按第 80 个百分位重新排列我的箱线图【英文标题】:ggplot2 reorder my boxplot by 80th percentile 【发布时间】:2021-12-25 07:41:43 【问题描述】:我想按照第 80 个百分位值的顺序重新排列箱线图。
我的情节是这样的:
我的代码结构如下:
ggplot(data, aes(x=reorder(y, x, median), y)) +
geom_boxplot(fill="deepskyblue") +
stat_boxplot(geom ='errorbar', width=0.3) +
theme_bw()+
scale_y_continuous(trans="log10", n.breaks = 6)
目前我按中位数对它们进行排序。我有两个问题:
看起来它按中值对箱线图进行排序,直到图的 1/3 左右,然后返回到随机排序。为什么会这样?
如何轻松按第 80 个百分位排序?我尝试在quantile(0.8, y)
中替换median
,但出现错误。
很遗憾,我不能将数据结构/变量作为机密共享。
谢谢。
【问题讨论】:
尝试 forcats::fct_reorder(x, y, .fun = quantile, probs = 0.8) 【参考方案1】:图表不按顺序的问题可能是NA
s,先尝试过滤一下:
data <- data %>% filter(!is.na(y))
尝试FUN = quantile, prob = 0.80
,在reorder
函数中你会得到:
ggplot(data, aes(x=reorder(y, x, FUN = quantile, prob=0.80), y)) +
geom_boxplot(fill="deepskyblue") +
stat_boxplot(geom ='errorbar', width=0.3) +
theme_bw()+
scale_y_continuous(trans="log10", n.breaks = 6)
【讨论】:
以上是关于ggplot2 按第 80 个百分位重新排列我的箱线图的主要内容,如果未能解决你的问题,请参考以下文章
R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
R语言ggplot2可视化时间序列数据:ggplot2可视化在时间轴上添加按月的箱图(boxplot)