2015-11-01 53 views
0

我想繪製一個散點圖,該散點圖也具有每個點的標籤。標籤是具有不同數字小數位的數字。 我想:R:plot:將標籤添加到具有不同小數位數的散點圖中

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) 

但標籤中並沒有顯示正確的小數位數的數字。 感謝您的幫助。

回答

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

+0

感謝優雅的答案。 –

0

所以,我改變的唯一辦法是讓格式函數在你的text()函數之外。然後,我給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) 
相關問題