在点图中添加点的值

时间:2015-04-04 14:02:16

标签: r plot

我可以使用以下代码绘制一个圆点图:

library("Hmisc")
df <- data.frame(ID=c("a","b","c","d","e"),a=c(1:5),b=c(2:6))
dotchart3(as.matrix(df[,c(2,3)]),df[,c(1)],pch=c(1,2))

但是如何在点的上方或下方添加点的数值?

2 个答案:

答案 0 :(得分:2)

您可以使用text,其中x位置作为其第一个参数,y位置作为其第二个参数,标签值作为其第三个参数。这些是矢量化的,因此您只需传递data.frame的列。 pos参数指定指定点(1)下面的标签:

text(df[,2], df[,1], df[,2], pos = 1)
text(df[,3], df[,1], df[,3], pos = 1)

或高于指定的点(3):

text(df[,2], df[,1], df[,2], pos = 3)
text(df[,3], df[,1], df[,3], pos = 3)

以下是后一种配置的示例:

enter image description here

答案 1 :(得分:1)

这应该可以解决问题:

 library("Hmisc")
 df <- data.frame(ID=c("a","b","c","d","e"),a=c(1:5),b=c(2:6))
 dotchart3(as.matrix(df[,c(2,3)]),df[,c(1)],pch=c(1,2))

 #a function where the two first input are identical to dotchart3

 addVal = function(x,labels,
                   decimals=0,
                   cex=0.1,
                   x.offset=0,
                   y.offset=.2) {
   len=length(labels)
   for(j in 1:dim(x)[2]) text(x = x[,j]+x.offset,
                              y = (1:len)+y.offset,
                              lab = paste("val=",round(x[,j],decimals)),
                              cex=cex)
 }

 addVal(df[,2:3],df[,1],cex=.7)