#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")