You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ggplot中结合facet_grid/facet_wrap与geom_quantile函数使用?

分面展示分位数回归曲线的需求与现有尝试

已实现的次优方案

我已找到一个次优解决方案,具体代码如下:

data("mtcars")

tau <- c(0.25, 0.5, 0.75)
cuts <- sapply(tau, function(x) quantile(mtcars[,'mpg'], x, na.rm = T))

quantiles <- sapply(mtcars[,'mpg'], function(x) {
  quant <- NA
  if(x < cuts[1]) quant <- 0
  for(i in 1:(length(cuts)-1)) {
    if(x >= cuts[i] & x < cuts[i+1]) {
      quant <- i
    } else if (x >= cuts[i+1]){
      quant <- i+1
    }
  }
  quant
})

labs <- paste0(tau[1:(length(tau)-1)], '-', tau[1:(length(tau)-1)+1])
labs <- c(paste("<", tau[1]), labs, paste(">=", tau[length(tau)]))
quantiles <- factor(quantiles, labels=labs)
mtcars$quantile <- quantiles

ggplot(data=mtcars, aes(x=disp, y=mpg)) +
  geom_point() +
  geom_smooth(method='lm') +
  facet_wrap(quantiles, nrow = 1)

将每个分位数组封装为独立子图

期望实现的目标

但我真正想实现的是使用ggplot的geom_quantile函数并进行分面展示。目前我已实现按颜色区分分位数,但无法用facet_wrap实现分面,具体代码如下:

ggplot(data=mtcars, aes(x=disp, y=mpg)) +
  geom_point() +
  geom_quantile(aes(colour = as.factor(..quantile..)), quantiles=tau)

已实现按颜色区分分位数,但希望改为分面展示

恳请各位提供帮助,谢谢!

内容的提问来源于stack exchange,提问作者liam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 14:20:14