#install.packages("readxl")
#安装读取数据包readxl
library(readxl)
#安装读取数据包readxl
cultivar_origin <- read_excel("cultivar.xlsx", col_types = c("text",
"numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "text", "numeric",
"numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "numeric", "numeric",
"numeric", "numeric", "text"))
#更改数据类型
cultivar_origin$type<-as.factor(cultivar_origin$type)
cultivar_origin$stage<-as.numeric(cultivar_origin$stage)
#install.packages("dplyr")
library(dplyr)
cultivar<-cultivar_origin%>%select(-c("type","stage"))
#install.packages("tidyverse")
library(tidyverse)
cultivar<-cultivar%>%remove_rownames%>% column_to_rownames(var="cultivar")
#将cultivar列作为行名
#library(BiocManager)
#BiocManager::install("ggtree")
library(ggtree)
dist_cultivar<-dist(cultivar)
#根据所有变量,计算各样本间的距离
hc_cultivar <- hclust(dist_cultivar)
#根据距离对样本聚类
ggtree(hc_cultivar)

#可通过“%<+% data ”命令,根据分类变量来着色,参考https://yulab-smu.top/treedata-book/chapter9.html
ggtree(hc_cultivar,layout = "circular") %<+% cultivar_origin +
aes(color=type)+
geom_tiplab2(offset=0.5,size=2)+
#添加样本标签
xlim(0,800)+
geom_highlight(node = 87,fill="red")+
geom_highlight(node = 88,fill="steelblue")+
geom_highlight(node = 89,fill="green")+
#根据聚类结果添加区分颜色,node的值从样本数量的后一位开始算,比如此例32个车型,则node从33开始。
geom_cladelabel(node=87,label="Tree1",
offset=280,barsize = 2,
vjust=-0.5,color="red")+
geom_cladelabel(node=88,label="Tree2",
offset=280,barsize = 2,
vjust=-18,hjust=-3,color="steelblue")+
geom_cladelabel(node=89,label="Tree3",
offset=280,barsize = 2,
vjust=2,hjust=1,color="green")

#添加外圈颜色标记,offset参数用于调节颜色条的远近,hjust用于调节文本标签的左右距离,vjust上下距离。
#可通过“%<+% data ”命令,根据分类变量来着色,参考https://yulab-smu.top/treedata-book/chapter9.html
group<-cultivar_origin$type
ggtree(hc_cultivar,layout = "circular") %<+% cultivar_origin +
aes(color=type)+
geom_tiplab2(offset=0.5,size=2)+
geom_tippoint(aes(size=stage), alpha=.6)+
#添加样本标签
xlim(0,800)+
geom_cladelabel(node=87,label="Tree1",
offset=280,barsize = 2,
vjust=-0.5,color="red")+
geom_cladelabel(node=88,label="Tree2",
offset=280,barsize = 2,
vjust=-18,hjust=-3,color="steelblue")+
geom_cladelabel(node=89,label="Tree3",
offset=280,barsize = 2,
vjust=2,hjust=1,color="green")
