如何在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
相关产品推荐
相关产品推荐

