代码之家  ›  专栏  ›  技术社区  ›  Hercules Apergis

R错误中的三维绘图

  •  0
  • Hercules Apergis  · 技术社区  · 6 年前

    >head(d1) #produced through the melt function as seen below
         Date variable     value
    1 2007 Q2    0.890 1.1358560
    2 2007 Q3    0.890 1.1560433
    3 2007 Q4    0.890 0.3747925
    4 2008 Q1    0.890 0.3866533
    5 2008 Q2    0.890 0.3872620
    6 2008 Q3    0.890 0.3844887
    

    我已经成功地绘制了一个热图,使用这个:

    d1<-melt(mydata,id.vars = "Date")
    P1 <- ggplot(data=d1, aes(x=Date, y=variable, fill=value)) + 
      geom_tile() +
      ggtitle("My heatmap") +scale_fill_gradientn(colors=colorRampPalette(c("lightgray","royalblue","seagreen","orange","red","brown"))(500),name="Variable") +
      labs(x = "Quarter",y="Alpha") +
      theme_bw()
    ggplotly(P1)
    *Don't know how to automatically pick scale for object of type yearqtr. Defaulting to continuous.*
    

    enter image description here

    但是,我想创建一个三维绘图。

    open3d()
    rgl.surface(x=d1$variable, y=d1$Date, 
                coords=c(1,3,2),z=d1$value, 
                color=colorzjet[ findInterval(d1$value, seq(min(d1$value), max(d1$value), length=100))] )
    axes3d()
    Error in rgl.surface(x = d1$variable, y = d1$Date, coords = c(1, 3, 2),  : 
    'y' length != 'x' rows * 'z' cols
    
    
    plot_ly(x=d1$Date,y=d1$variable,z=d1$value,type="surface",colors=colors)
    Error: `z` must be a numeric matrix
    I have tried to use as.matrix(apply(d1,2,as.numeric)), but this returns NAs to the date argument.
    

    是季度日期的性质弄乱了图表吗?(因为即使是热图也没有按季度显示日期。有什么建议吗?

    dput(d1) 此处输出: dput(d1) output

    1 回复  |  直到 6 年前
        1
  •  2
  •   user2554330    6 年前

    你上传的文件是CSV文件,不是 dput 输出。但你可以这样读和画:

    d1csv <- read.csv("dput_output.csv")
    year <- as.numeric(sub(" .*", "", d1csv$Date))
    quarter <- as.numeric(sub(".*Q", "", d1csv$Date))
    
    Date <- matrix(year + (quarter - 1)/4, 55)
    variable <- matrix(d1csv$variable, 55)
    value <- matrix(d1csv$value, 55)
    
    persp3d(Date, variable, value, col = "red")
    

    enter image description here