1

我正在尝试在 R 中的 3D 图中绘制日期、x 和 y。(使用 RStudio 0.99.903)、R(3.3.2)、scatterplot3d(0.3-40)、rgl(0.98.1)

dates = c("2016-11-10","2016-11-20","2016-12-01","2016-12-15","2016-12-30")

x = rnorm(5,0,1)

y = rnorm(5,1,2)

A = data.frame(dates, x, y)

A$dates = as.Date(A$dates,"%yyyy-%mm-%dd")

library(scatterplot3d)

with(data=A, scatterplot3d(x=x,y=y,z=dates))

This plots the dates as integers

I also tried the rgl package, but get the same result.

library(rgl)

plot3d(x=A$x,y=A$y,z=A$dates)
4

2 回答 2

1

阅读如何使用as.Date. 您需要适当地格式化日期并获得所需的情节:

     dates = c("2016-11-10","2016-11-20","2016-12-01","2016-12-15","2016-12-30")
     x = rnorm(5,0,1)
     y = rnorm(5,1,2)
     A = data.frame(dates, x, y)

     A$dates = as.Date(A$dates,"%Y-%m-%d")
     
     library(scatterplot3d)
     
     scatterplot3d(x=A$x, y=A$y, z=A$dates)

情节看起来像:

在此处输入图像描述

要校正 z 轴,您可以参考此页面

为避免这些错误,您可以使用anytimeDirk Eddelbuettel 的 package

library(anytime)
A$dates <- anytime(A$dates) 
于 2017-07-08T17:14:30.477 回答
1

Masoud 向您展示了如何将字符串转换为日期。要在 中获得漂亮的日期标签rgl,您需要自己做一些额外的工作:它对日期一无所知。例如,

 dates = c("2016-11-10","2016-11-20","2016-12-01","2016-12-15","2016-12-30")
 x = rnorm(5,0,1)
 y = rnorm(5,1,2)
 A = data.frame(dates, x, y)


 A$dates = as.Date(A$dates,"%Y-%m-%d")

 ticks <- pretty(A$dates)
 plot3d(A$x, A$y, A$dates, axes = FALSE)
 box3d()
 axes3d(c("x", "y")) # default axis labels here
 axis3d("z", at = ticks, 
   labels = format(ticks, format = "%b %d")) # see ?strptime for formats

我不确定这些标签是否可以在scatterplot3d.

于 2017-07-09T21:14:35.270 回答