在R中向树状图叶子添加符号

时间:2012-08-29 08:35:03

标签: r plot key symbols dendrogram

我想在树状图上反映变量的树状图的叶子上添加符号,这些符号类似于:

require(graphics)

hc <- hclust(dist(USArrests[1:5,]), "ave")
plot(hc)
plot(hc, hang = -1)

USArrests[1:5,]

           Murder Assault UrbanPop Rape
Alabama      13.2     236       58 21.2
Alaska       10.0     263       48 44.5
Arizona       8.1     294       80 31.0
Arkansas      8.8     190       50 19.5
California    9.0     276       91 40.6    

enter image description here

感谢有关如何解决这个问题的任何建议

解 按照Backlin的有用建议,我使用以下解决方案

require(graphics)

hc <- hclust(dist(USArrests[1:5,]), "ave")

plot(hc, hang = -1, xlab="", sub="")

col.circle=c("yellow", "red")[cut(USArrests$Murder[hc$order], c(8,10,15))]

symbols(1:5, rep(-25, 5), circles=rep(1, 5), add=TRUE, inches=.2,bg=col.circle, xpd=TRUE)

col.square=c("blue", "green")[cut(USArrests$Assault[hc$order], c(100,200,300))]

symbols(1:5, rep(-35, 5), squares=rep(1, 5), add=TRUE, inches=.4,bg=col.square, xpd=TRUE)

legend(3.7,85,legend=c("Murder 8-10","Murder 10-15","Assualt 100-200","Assualt 200-300"),fill=c("yellow","red","blue","green"))

enter image description here

1 个答案:

答案 0 :(得分:4)

可以使用symbols函数以稍微迂回的方式实现这一目标,但仍然是有效的方法。它不支持三角形,但有一些其他形状可供选择。在下面的演示中,请注意参数xpd=TRUE,它允许您在绘图区域外绘制,即在边距内绘制。

plot(hc, hang = -1, xlab="", sub="")
symbols(1:5, rep(-25, 5), circles=rep(1, 5), add=TRUE, inches=.2,
        bg=rep(c("grey", "red"), c(3,2)), xpd=TRUE)
symbols(1:5, rep(-35, 5), squares=rep(1, 5), add=TRUE, inches=.4,
        bg=rep(c("grey", "red"), c(1,4)), xpd=TRUE)

enter image description here

为了便于举例,符号的y坐标设置为绝对值。如果你想使它们相对于绘图的坐标使用类似下面的内容,其中par("usr")是一个带有绘图区域(x-left,x-right,y-bottom,y-top)的向量

y = par("usr")[3] - .04 * diff(par("usr")[3:4])

也可以使用symboltext绘制图例。这个想法是一样的,你可以自己弄明白,即使它非常繁琐。