函数绘制R中x,y,z坐标的树形图

时间:2013-02-19 07:23:23

标签: r

以下dental.csv文件

item,x,y,z
A1,66,89,122
A2,14,44,-9
A3,-17,199,11
A35,99,0,12
test,15,144,15

我写了以下R脚本

mycoord<-read.csv("dental.csv")
d<-dist(mycoord)
h<-hclust(d)
plot(h, lab=mycoord$item)

这将“测试”坐标与最接近的值匹配如下

enter image description here

我需要做的是一个函数,它接受整数x,y,z并将它们作为“test”放在数据帧中,然后绘制树形图。有什么帮助吗?

另一件事,对于上面相同的R脚本,我添加了以下

newdata<-mycoord[,2:4]
heatmap(as.matrix(newdata))

我得到以下图表

enter image description here

由于某种原因,我不能在热图上添加标签(我的意思是“A3”,“A4”等......而不是“1”,“2”,“3”等。)我得到错误时使用参数 lab = mycoord $ item

2 个答案:

答案 0 :(得分:2)

是这样的,您只想拥有一个功能,它可以获取原始数据矩阵,然后是测试矩阵,将其组合并将其提供给您的群集?想想

testClust <- function(data,test){
    mycoord <- rbind(data,test)
    d<-dist(mycoord)
    h<-hclust(d)
    plot(h, lab=mycoord$item)
}

答案 1 :(得分:1)

如何在没有test的情况下首先加载您的CSV:

df <- read.csv(header=T, text="item,x,y,z
A1,66,89,122
A2,14,44,-9
A3,-17,199,11
A35,99,0,12")

然后加载test

test <- data.frame(item="test", x=15, y=144, z=15)

然后,使用rbind作为:

计算距离
d <- dist(rbind(df[,2:4], test[,2:4]))
h <- hclust(d)
plot(h, labels=c(as.character(df$item), as.character(test$item)))

这是你需要的吗?

第二部分:

dd <- rbind(df, test)
dd.m <- as.matrix(dd[,2:4])
row.names(dd.m) <- dd[,1]
heatmap(dd.m)

enter image description here