如何在R scatterplot3d上的每个绘图点上添加标签注释

问题描述

数据格式“ NB”如下。

> head(NB)
   time    speed  traffic  density
1 06:00 44.04854 304.6616 108.4641
2 06:10 43.73164 332.3510 111.6164
3 06:20 43.35056 359.2273 114.8773
4 06:30 42.91960 382.6465 118.5487
5 06:40 42.42904 400.3864 121.8942
6 06:50 41.91823 415.5429 124.9405

> str(NB)
'data.frame':   85 obs. of  4 variables:
 $ time   : Factor w/ 144 levels "00:00","00:10",..: 37 38 39 40 41 42 43 44 45 46 ...
 $ speed  : num  44 43.7 43.4 42.9 42.4 ...
 $ traffic: num  305 332 359 383 400 ...
 $ density: num  108 112 115 119 122 ...

我已经使用以下代码制作了3D图形。我想知道如何将第一个“时间”列添加到3d图形绘制的点并标记“时间”(06:00,06:10 .... 20:00)

zz <- scatterplot3d(x=NB[,2],y=NB[,3],z=NB[,4],main=naljja,xlab="speed",ylab="traffic",zlab="density",pch=1,color = "blue",grid = TRUE)

image result from upper code(zz)

解决方法

尝试获取zz对象(结果为scatterplot3d),然后使用xyz.convert函数将坐标从3D(x,y,z)转换为2D投影(x ,y)。然后use可以使用text并从time列(第一列)向图形添加标签。在这种情况下,我使用cex来减小文本大小,并使用pos将标签放置在点的右侧。

library(scatterplot3d)

zz <- scatterplot3d(x = NB[,2],y = NB[,3],z = NB[,4],xlab = "speed",ylab = "traffic",zlab = "density",pch = 1,color = "blue",grid = TRUE)

zz.coords <- zz$xyz.convert(NB[,NB[,4]) 

text(zz.coords$x,zz.coords$y,labels = NB[,1],cex = .5,pos = 4)  

图解

3d plot with text labels on points

数据

NB <- structure(list(time = c("06:00","06:10","06:20","06:30","06:40","06:50"),speed = c(44.04854,43.73164,43.35056,42.9196,42.42904,41.91823),traffic = c(304.6616,332.351,359.2273,382.6465,400.3864,415.5429),density = c(108.4641,111.6164,114.8773,118.5487,121.8942,124.9405)),class = "data.frame",row.names = c("1","2","3","4","5","6"))

参考

https://www.r-bloggers.com/2012/01/getting-fancy-with-3-d-scatterplots/