我正在尝试绘制一个散点图,它也有每个点的标签。标签是具有不同小数位数的数字。 我试过了:
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)
但是标签没有显示具有正确小数位数的数字。 谢谢你的帮助。
答案 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'))
答案 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)