我想在树状图上反映变量的树状图的叶子上添加符号,这些符号类似于:
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
感谢有关如何解决这个问题的任何建议
解 按照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"))
答案 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)
为了便于举例,符号的y坐标设置为绝对值。如果你想使它们相对于绘图的坐标使用类似下面的内容,其中par("usr")
是一个带有绘图区域(x-left,x-right,y-bottom,y-top)的向量
y = par("usr")[3] - .04 * diff(par("usr")[3:4])
也可以使用symbol
和text
绘制图例。这个想法是一样的,你可以自己弄明白,即使它非常繁琐。