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

如何在echarts4r分组散点图中添加带透明度的椭圆?

给echarts4r分组散点图添加带透明度的椭圆

要实现你想要的效果,我们可以先为每个分组计算置信椭圆的坐标数据,再将其作为多边形图层添加到散点图中,具体步骤如下:

1. 生成椭圆坐标数据

借助car包的dataEllipse函数可以快速生成每个物种的95%置信椭圆坐标:

library(echarts4r)
library(dplyr)
library(car)

# 批量生成各物种的椭圆数据
ellipse_df <- iris |>
  group_by(Species) |>
  group_map(function(df, grp) {
    # 生成椭圆坐标,不直接绘图
    ellipse_coords <- dataEllipse(df$Sepal.Length, df$Petal.Length, 
                                 levels = 0.95, draw = FALSE)
    # 整理为带物种标识的数据框
    data.frame(
      Sepal.Length = ellipse_coords[, 1],
      Petal.Length = ellipse_coords[, 2],
      Species = grp$Species
    )
  }) |>
  bind_rows()

2. 绘制散点图并叠加椭圆

在你原有的散点图代码基础上,用e_polygon添加椭圆图层,设置填充透明度:

iris |>
  group_by(Species) |>
  e_charts(Sepal.Length) |>
  e_scatter(Petal.Length, symbol_size = 5) |>
  # 添加椭圆,按物种匹配颜色,设置透明度
  e_polygon(data = ellipse_df, Petal.Length,
            coord_system = "cartesian2d",
            itemStyle = list(
              color = c("#5470c6", "#91cc75", "#fac858"), # 对应三个物种的颜色
              opacity = 0.2
            )) |>
  e_tooltip() |>
  e_legend()

补充说明

  • 若要调整椭圆的置信水平,修改dataEllipse中的levels参数即可(比如levels = 0.9对应90%置信区间)
  • itemStyle里的color可以自定义每个分组的椭圆颜色,opacity控制透明度(取值0-1,数值越小越透明)
  • 如果你不想依赖car包,也可以手动通过均值、协方差矩阵计算椭圆参数来生成坐标,但car包的方法更高效便捷

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 17:33:20