0

我使用library(rgl)包在 R-studio 中制作 3d 图。如图所示,几乎所有看起来都不错

在此处输入图像描述

日期格式除外。无论我尝试做什么,它都不会显示日期来代替整数。这是我用来生成图的代码:

 # Plot
Date <- as.Date(df$Date)

df["Color"] <- NA 
mycolors <- c('royalblue')
df$Color <- mycolors

par(mar=c(0,0,0,0))
plot3d(
  x = Date, y = C, z = L,
  col = df$Color,
  type = 'p',
  size = 2,
  xlab="Date", ylab="C", zlab="L")
filename <- writeWebGL(dir = file.path(folder, coln),
                       width=600, height=600, reuse = TRUE)

我尝试了一些方法来获取轴上的日期,例如:

Date1 = as.character(df$Date)
Date = as.Date(Date1, format = "%Y%m%d")
Date = format(as.Date(df$Date, origin="1970-01-01"))
Date <- seq(as.Date("2016-02-29", format = "%Y-%m-%d"), by ="days", length = length(df$Date), origin = "1970-01-01")

但没有任何效果。我总是得到代表日期的整数,例如

as.Date(17000, "1970-01-01")
1 "2016-07-18"

谁能知道如何解决这个问题?我将不胜感激。

4

1 回答 1

1

rgl包不使用与基本图形相同的格式化函数,因此您需要自己格式化这些值。例如,

df <- data.frame(Date = seq(as.Date("2016-02-29"), as.Date("2019-01-01"), length=100),
                 y = rnorm(100),
                 z = rnorm(100))
library(rgl)
plot3d(df, axes = FALSE)
ticks <- pretty(df$Date, 3)
labels <- format(ticks, format = "%Y-%m")
axis3d("x", at = ticks, labels = labels) # Custom on x axis
axes3d(c("y", "z"))                      # Defaults on other axes 
box3d()

reprex 包于 2021-03-05 创建(v0.3.0)

截屏

的结果pretty()可能会超出数据范围,因此您可能希望减少它,或更改您的xlim值以避免轴超出范围,如图所示2016-01

于 2021-03-05T11:17:22.057 回答