R:plot:为具有不同小数位数的散点图点添加标签

时间:2015-11-01 21:02:30

标签: r plot rounding labels

我正在尝试绘制一个散点图,它也有每个点的标签。标签是具有不同小数位数的数字。 我试过了:

x1=c(1:5)
y1=c(1:5)

round1 <- c(1,2,1,3,4)
df <- data.frame(x1,y1,round1)
df

plot(x=df$x1,y=df$y1)
text(df$x1, df$y1, labels=format(round(df$y1,df$round1)) , cex= 0.7, pos=3)

但是标签没有显示具有正确小数位数的数字。 谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用formatC对其中一个格式化功能进行矢量化。例如,沿着螺旋线增加小数位数。

## Some data
theta <- seq(-2*pi, 2*pi, length=100)
round1 <- rep(1:5, each=20)
dat <- data.frame(x=cos(theta)*exp(.2*theta), y=sin(theta)*exp(.2*theta), round1=round1)

plot(dat[1:2], type="l", pch=20)
inds <- seq(1, 100, by=5)  # only add labels at a few points
text(dat[inds,1:2],
     labels=Vectorize(formatC)(dat$x[inds], digits=dat$round1[inds], format='f'))

enter image description here

答案 1 :(得分:0)

所以,我唯一改变的是在text()函数之外使用format函数。然后,我向nsmall添加了一个值,表示您希望小数点右边有多少位数。它现在应该工作!当前示例在小数点右侧添加3位数字。

x1=c(1:5)
y1=c(1:5)

round1 <- c(1,2,1,3,4)

## Assign how many digits you want to digits:
digits=3
round1 <- format(round(round1,digits),nsmall=digits)

df <- data.frame(x1,y1,round1)
df
plot(x=df$x1,y=df$y1)

# Changed the labels to directly reference round1 vector
text(df$x1, df$y1, labels=round1 , cex= 0.7, pos=3)