R语言内置数据集USArrests
1973年美国50个州每10万人中因袭击、谋杀和强奸而被捕的人数和居住在城市地区的人口比例 层级聚类法 使用到的函数是
hclust()
hc<-hclust(dist(USArrests),method="ave")
安装ggdendro
包并查看帮助文档
install.packages("ggdendro")
help(package="ggdendro")
将层级聚类的结果转化为ggdendro作图需要的格式,用到的函数是dendro_data(hc,type="rectangle")
type有两个参数可选
df2<-dendro_data(hc,type="rectangle")
ggplot(segment(df1))+
geom_segment(aes(x=x,y=y,xend=xend,yend=yend))
image.png
df2<-dendro_data(hc,type="triangle")
ggplot(segment(df2))+
geom_segment(aes(x=x,y=y,xend=xend,yend=yend))
image.png
ggplot(segment(df1))+
geom_segment(aes(x=x,y=y,xend=xend,yend=yend))+
geom_text(data=df1$labels,aes(x=x,y=y-1,label=label),
angle=90,hjust=1,vjust=0.3,size=3)+
scale_y_continuous(expand=c(0.2,0))+
theme_bw()+
geom_point(data=df1$labels,aes(x=x,y=y),color="red")
image.png
df1$labels$Group<-c(rep("A",16),rep("B",14),rep("C",20))
ggplot(segment(df1))+
geom_segment(aes(x=x,y=y,xend=xend,yend=yend))+
geom_text(data=df1$labels,aes(x=x,y=y-1,label=label,color=Group),
angle=90,hjust=1,vjust=0.3,size=3)+
scale_y_continuous(expand=c(0.2,0))+
theme_bw()+labs(x="",y="")+
geom_point(data=df1$labels,aes(x=x,y=y,color=Group,shape=Group))+
scale_color_brewer("",palette = "Set1")+
theme(legend.position="none",
panel.grid=element_blank(),
panel.border=element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())
image.png
ggplot(segment(df1))+
geom_segment(aes(x=x,y=y,xend=xend,yend=yend))+
geom_text(data=df1$labels,aes(x=x,y=y-1,label=label,color=Group),
angle=90,hjust=1,vjust=0.3,size=3)+
scale_y_continuous(expand=c(0.2,0))+
theme_bw()+labs(x="",y="")+
geom_point(data=df1$labels,aes(x=x,y=y,color=Group,shape=Group))+
scale_color_brewer("",palette = "Set1")+
theme(legend.position="none",
panel.grid=element_blank(),
panel.border=element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())+
geom_rect(aes(xmin=0,xmax=16.5,ymin=0,ymax=90),color="red",fill="red",alpha=0.005)+
geom_rect(aes(xmin=16.5,xmax=30.5,ymin=0,ymax=90),color="blue",fill="blue",alpha=0.003)+
geom_rect(aes(xmin=30.5,xmax=50,ymin=0,ymax=90),color="green",fill="green",alpha=0.005)