之前的推文介紹過ggplot2繪圖添加橢圓分組邊界和圓形分組邊界朝聋,借助的函數(shù)分別是
- stat_ellipse()
- ggforce包里的geom_circle()函數(shù)
今天查找刹男梗基圖的資料的時候發(fā)現(xiàn)了一份介紹ggforce這個包的使用方法的文章 https://rviews.rstudio.com/2019/09/19/intro-to-ggforce/ ,發(fā)現(xiàn)發(fā)現(xiàn)添加分組邊界還有其他的實現(xiàn)方法外构,今天的推文記錄一下。
示例數(shù)據(jù)就直接使用R語言內(nèi)置的鳶尾花數(shù)據(jù)集
首先是矩形的分組邊界
使用的是 geom_mark_rect()
函數(shù)
df<-iris
colnames(df)<-paste0("V",1:5)
library(ggplot2)
library(ggforce)
ggplot(data=df,aes(x=V1,y=V2,color=V5))+
geom_point()+
geom_mark_rect(aes(fill=V5),alpha=0.1)+
theme_bw()
添加圓形的分組邊界
使用到的是geom_mark_circle()
函數(shù)
df<-iris
colnames(df)<-paste0("V",1:5)
library(ggplot2)
library(ggforce)
ggplot(data=df,aes(x=V1,y=V2,color=V5))+
geom_point()+
geom_mark_circle(aes(fill=V5),alpha=0.1)+
theme_bw()+
coord_cartesian(clip = "off")+
theme(plot.margin = margin(50,50,50,150),
legend.background = element_blank())
這里又遇到了一個新的知識點
coord_cartesian(clip = "off")
坎弯,如果加上這一行命令厦坛,就能夠讓三個圓圈在最上層露该,不加的效果如下圖棠众,顯示不全
添加橢圓分組邊界
用到的是geom_mark_ellipse()
函數(shù)
df<-iris
colnames(df)<-paste0("V",1:5)
library(ggplot2)
library(ggforce)
ggplot(data=df,aes(x=V1,y=V2,color=V5))+
geom_point()+
geom_mark_ellipse(aes(fill=V5),alpha=0.1)+
theme_bw()+
coord_cartesian(clip = "off")+
theme(plot.margin = margin(10,10,10,50),
legend.background = element_blank())
最后是無規(guī)則形狀的分組邊界
用到的是geom_mark_hull()
函數(shù)
df<-iris
colnames(df)<-paste0("V",1:5)
library(ggplot2)
library(ggforce)
#install.packages("concaveman")
library(concaveman)
ggplot(data=df,aes(x=V1,y=V2,color=V5))+
geom_point()+
geom_mark_hull(aes(fill=V5),alpha=0.1)+
theme_bw()+
coord_cartesian(clip = "off")+
theme(plot.margin = margin(10,10,10,50),
legend.background = element_blank())
這里會遇到一個警告信息Warning message: The concaveman package is required for geom_mark_hull
需要安裝并加載concaveman這個包
···
install.packages("concaveman")
library(concaveman)
···
還可以給每個組添加文字標簽,加一個label參數(shù)就好了
df<-iris
colnames(df)<-paste0("V",1:5)
library(ggplot2)
library(ggforce)
#install.packages("concaveman")
library(concaveman)
ggplot(data=df,aes(x=V1,y=V2,color=V5))+
geom_point()+
geom_mark_ellipse(aes(fill=V5,label=V5),alpha=0.1)+
theme_bw()+
coord_cartesian(clip = "off")+
theme(plot.margin = margin(10,10,10,50),
legend.background = element_blank())
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本