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

如何在R中结合e_facet与e_funnel实现分面漏斗图?

解决echarts4r漏斗图e_facet分面重叠问题

当使用echarts4r的e_facet()实现类似ggplot2的分面效果时,折线图可以正常显示,但漏斗图会出现多个图表重叠在中心的问题。这是因为漏斗图属于非笛卡尔坐标系图表,默认布局参数未适配分面的网格结构,需要手动调整子图的位置与尺寸。

方案1:通过e_facet的grid参数自定义布局

直接在e_facet()中为每个分面子图指定独立的网格区域,避免重叠:

library(echarts4r)
library(magrittr)

# 示例数据集
df <- data.frame(group = c('A','A','B','B'),
                 label = c('step1','step2','step1','step2'),
                 value = c(.99,.85,.97,.7))

df %>%  
  group_by(group) %>% 
  e_charts(label) %>%  
  e_funnel(value, label) %>% 
  e_facet(
    grid = list(
      list(left = "5%", right = "60%", top = "10%", bottom = "10%"),
      list(left = "60%", right = "5%", top = "10%", bottom = "10%")
    )
  )

该代码为两个分面子图分别分配了左右独立的网格空间,第一个子图占据左侧区域,第二个占据右侧区域,实现并排显示。

方案2:手动用e_grid构建分面布局

不依赖e_facet(),通过e_grid()创建多个网格,再为每个网格绑定对应分组的漏斗图,灵活性更高:

df %>%  
  e_charts() %>%
  # 创建两个独立网格
  e_grid(left = "5%", right = "60%", top = "10%", bottom = "10%") %>%
  e_grid(left = "60%", right = "5%", top = "10%", bottom = "10%") %>%
  # 为第一个网格添加分组A的漏斗图
  e_funnel(data = df[df$group == "A",], label, value, gridIndex = 0) %>%
  # 为第二个网格添加分组B的漏斗图
  e_funnel(data = df[df$group == "B",], label, value, gridIndex = 1) %>%
  e_title(text = "分组漏斗图分面展示")

补充说明

折线图能正常分面是因为它属于笛卡尔坐标系图表,e_facet()会自动适配网格布局;而漏斗图无坐标系绑定,默认布局不会跟随分面网格调整,因此需要手动指定位置参数。

内容的提问来源于stack exchange,提问作者Joaquín L

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 04:37:19