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

如何在echarts4r中实现带分组的分面折线散点图(复刻ggplot效果)

在echarts4r中复刻ggplot的分面分组折线散点图

问题说明

认可echarts4r的功能,希望在Shiny应用中使用,但无法复刻ggplot里的分面分组折线散点图——具体是没法实现按id分组,让折线连接对应id的散点,同时按dose分面展示。

示例数据

library(tidyverse)
library(echarts4r)

data = tibble(time = factor(sort(rep(c(4,8,24), 30)), levels = c(4,8,24)),
              dose = factor(rep(c(1,2,3), 30), levels = c(1,2,3)),
              id = rep(sort(rep(LETTERS[1:10], 3)),3),
              y = rnorm(n = 90, mean = 5, sd = 3))

目标ggplot效果

以下ggplot代码实现了需求:按dose分面,每个分面内按id分组,用折线连接同一id的散点。

ggplot(data = data, mapping = aes(x = time, y = y, group = id)) + 
  geom_point() + 
  geom_line() + 
  facet_wrap(~dose)

尝试的无效代码

尝试通过group_by(dose)配合e_facet实现分面,但未达到按id分组连线的效果:

data %>% 
  group_by(dose) %>% 
  e_charts(time) %>%
  e_line(y) %>%
  e_facet(rows = 1, cols = 3)

解决方案

核心是用e_group(id)指定分组依据,再结合e_facet按dose分面,同时分别添加折线和散点:

data %>%
  e_charts(time) %>%
  e_group(id) %>% # 指定按id分组,确保折线连接同一id的点
  e_line(y, symbol = "none") %>% # 绘制折线,关闭默认点避免与散点重复
  e_point(y) %>% # 添加散点
  e_facet(rows = 1, cols = 3, facet_by = "dose") # 按dose分面展示

关键说明

  • e_group(id)是实现按id连线的核心,它让echarts4r识别每个id的系列,单独绘制折线
  • 无需提前用group_by(dose),直接在e_facet中通过facet_by参数指定分面字段即可
  • 分开使用e_line和e_point可以分别控制两者的样式,比如给折线设置symbol = "none"避免点重复显示

内容的提问来源于stack exchange,提问作者Hugo van Kessel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:45:43