如何在R语言ggplot2绘图中添加分组椭圆得到预期可视化图表
R ggplot2分组散点图添加置信椭圆的修正代码
原有代码问题梳理
- 数据集传参错误:ggplot调用时传入的参数为
y,实际你构造的数据集名为df - 依赖包缺失:
geom_text_repel属于ggrepel扩展包,需要提前加载 - 缺失
stat_ellipse图层调用:只需按分组映射颜色参数,添加该图层即可生成对应分组的置信椭圆
完整可运行代码
# 加载所需包 library(ggplot2) library(ggrepel) # 构造数据集 data.frame(obs=c("X1","X2","X3","X4","X5","X6","X7","X8","X9","X10","X11","X12","X13","X14","X15","X16","X17","X18","X19","X20","X21","X22","X23","X24"), V1=c(0.12299204,0.82459186,0.74426426,0.74518490,0.90235626,0.80238518,0.14670287,0.29485058,0.15263963,0.35564952,0.74018218,0.90043726,0.89870240,0.11331604,0.38224485,0.30905100,0.16173775,0.06165922,0.16236031,0.19410052,0.15621499,0.14355361,0.09841802,0.14200906), V2=c(-0.07667381, 0.05661226,-0.06755684, 0.24279246, 0.20566121, 0.09090093,-0.15771084, 0.68288156, 0.05995853, 0.17265401, 0.10524241, 0.28202393, 0.13269340,-0.06152291, 0.14251037, 0.32915325,-0.15536643,-0.06455349, 0.89639327, 0.25273722,-0.12570665, 0.95207149, 0.32158002, 0.93175509), V3=c( 0.785128638, 0.137638800, 0.413372884, 0.071252925, 0.153475018, 0.288985725,-0.003831879,-0.035310199, 0.149559691, 0.180806799,-0.011326334,-0.029067359, 0.093260484,-0.053193781,-0.068764135, 0.123221407,-0.044328208, 0.857713525, 0.104352647, 0.807427676, 0.504358226,-0.013406375, 0.751067158, 0.105874634), V4=c(-0.017742238, 0.216325083, 0.121780449, 0.114055328, 0.078455652, 0.218005225, 0.405876010,-0.089009642, 0.099241491, 0.107780652, 0.248500052, 0.050069182, 0.219363523,-0.094918144, 0.725727266, 0.724975094, 0.621679968,-0.118206228, 0.145886691, 0.249329008,-0.188579718, 0.049934405, 0.007372841, 0.025672350), V5=c( 0.01547677, 0.16555178, 0.26019454, 0.08977182, 0.21660527, 0.35163419, 0.71035498, 0.35886762, 0.87849390,-0.01351151,-0.35429053, 0.02127159,-0.05830117,-0.05454903, 0.06498632, 0.06387208, 0.21214453,-0.07420916,-0.11399133, 0.13361320, 0.17796307,-0.01886769, 0.16513371,-0.02091601), V6=c( 0.071459381, 0.103824145, 0.296293694, 0.318562131, 0.026584128, 0.044575715, 0.394070695, 0.301593577,-0.070145516, 0.815826736, 0.204876351,-0.006624310, 0.087139899,-0.008305995, 0.088330589, 0.229090697,-0.256193405,-0.068229882, 0.059314345, 0.163380601, 0.603980086,-0.020015746, 0.219288132,-0.040558617), V7=c( 0.0937721448, 0.1257961637, 0.0818954368, 0.3470549669,-0.0145647326, 0.0595075312,-0.0075184176,-0.1745364284,-0.0544797910, 0.0934216940,-0.0933605187,-0.1502702725, 0.0734903991, 0.9511026556,-0.1550272896,-0.0449080619, 0.0524177580,-0.1177789182, 0.0040840036,-0.0208707253,-0.1842557001, 0.0124933572,-0.0008850238,-0.0037866599), group=c("I","I","II","II","II","II","III","III","III","II","II","II","II","III","III","III","III","II","II","II","II","III","III","III") )->df # 绘图代码 ggplot(df,aes(x = V1, y = V2,label=factor(obs), color=factor(group), shape =factor(group))) + # 添加分组置信椭圆,level为置信水平,可按需调整 stat_ellipse(level = 0.95, show.legend = FALSE) + geom_text_repel(show.legend = FALSE)+ geom_point(size=2)+ labs(color="Legend", shape="Legend")+ # 统一设置图例样式 guides( color = guide_legend(override.aes = list(shape = c(16,17,15))) )+ theme_classic()
可调整参数说明
- 若需要调整椭圆的置信水平,修改
stat_ellipse的level参数即可,默认值为0.95 - 若需要椭圆带填充效果,可添加
geom="polygon", alpha=0.1参数到stat_ellipse中,实现半透明填充效果 - 原有代码重复设置了
guides规则,上述代码已做简化,保留和预期效果匹配的图例样式
内容的提问来源于stack exchange,提问作者cnauber
相关产品推荐
相关产品推荐

