【问题标题】:plot 3D density plot use gglot/plot_ly绘制 3D 密度图使用 gglot/plot_ly
【发布时间】:2021-06-30 08:46:57
【问题描述】:

我有一个11 维向量,它是[0,1] 的除法:

Vec = seq(0,1,1/12)

还有一个11-by-11 矩阵

A = matrix(c(0.9024306 , 0.8452877 , 0.8141085,  0.7549162 , 0.6824799 , 0.6109678 , 0.5905854 , 0.5299411,  0.4550736,  0.3858676,  0.2143513,
         0.7819361,  0.8210354  , 0.8331744,   0.8182613  , 0.7622890 ,  0.7101383 ,  0.6931922  , 0.6408286,   0.5925585 , 0.5282755,  0.4037932,
         0.7213725 ,  0.8014270,   0.8334573 ,  0.8394664 ,  0.7965267  , 0.7557029 ,  0.7411934  , 0.6947566 ,  0.6590388  , 0.5987447 , 0.4968339,
         0.6747898  , 0.7823459  , 0.8286614 ,  0.8500438  , 0.8196929 ,  0.7884412 ,  0.7761882  , 0.7352614 ,  0.7087581 ,  0.6523485 , 0.5672221,
         0.6344532 ,  0.7626475  , 0.8205274  , 0.8546509  , 0.8372373 ,  0.8149571  , 0.8049617   , 0.7695615   , 0.7506879 ,  0.6982902 , 0.6272401 ,
         0.5953397  ,  0.7403922  ,  0.8086858 ,   0.8545969  ,  0.8517511  ,  0.8388487 ,   0.8313441   , 0.8020533  ,  0.7902309 ,   0.7423674  , 0.6845121 ,
         0.5607208  ,  0.7177988 ,   0.7945752  ,  0.8503988  ,  0.8623037  ,  0.8583240 ,   0.8533009   , 0.8301061   , 0.8242061 ,   0.7809468  , 0.7343530 ,
         0.5235966  ,  0.6901752  ,  0.7751871 ,    0.8410303 ,    0.8709305 ,    0.8772494 ,    0.8752120 ,    0.8593621 ,    0.8594394 ,    0.8218108 ,    0.7868039 ,  
         0.4792436 ,    0.6519074 ,    0.7454233  ,   0.8222904 ,    0.8770665 ,    0.8968215  ,   0.8988547 ,    0.8930324  ,   0.8996717  ,   0.8698448 ,    0.8479224 ,  
         0.4310832  ,   0.6026974 ,    0.7035051 ,    0.7909658  ,   0.8776638  ,   0.9136550  ,   0.9208403  ,   0.9277279 ,    0.9406499 ,    0.9208578 ,    0.9120395 ,  
         0.3622446  ,   0.5148011 ,    0.6215788  ,   0.7210252 ,    0.8646102  ,   0.9275842  ,   0.9438128  ,   0.9730440   ,  0.9930145 ,    0.9911498  ,  0.9985318),nrow=11,byrow=TRUE)

我期望的是像下面这样的散点图:

每个点代表一对,例如,(0.08333, 0.08333, 0.90243) 等。

我尝试plot_ly 绘制此图,但失败了。任何人都可以阐明如何绘制这个吗?非常感谢您的建议!

【问题讨论】:

    标签: r ggplot2 ggplotly


    【解决方案1】:

    这是一个非常接近的:

    
    library(RColorBrewer)
    library(plot3D)
    
    colfun <- colorRampPalette( c("blue","cyan","orange","yellow") )
    mycolors <- colfun(11)
    persp3D(
        z=t(A),
        col=mycolors,
        border="black",
        theta=45+270,
        phi=15,
        zlim=c(0,1.5),
        colkey=FALSE,
        lwd=.3,
        ticktype="detailed",
        nticks=7,
        bty="b2"
    )
    
    

    【讨论】:

      【解决方案2】:

      A 矩阵可以是 plot_ly` 的 z 参数。 Plotly 从矩阵中计算出维度。在您的情况下,您不需要向轴刻度添加标签,但是当 x 和 y 值的范围不是 [0,1] 时,您可以添加轴标签(尽管这确实会产生警告,尽管完全成功):

      if( !require(plotly) ){install.packages("plotly", dependencies=TRUE)
                             library(plotly)}
      plot_ly(z = A, type = "surface", labels=list(x=(1:11),y=(1:11)))
      

      你可以忘记 ggplot2。它不做伪3D。哈德利在哲学上反对这种可视化。使用交互式旋转进行这种绘图的 R 包是 rgl

      【讨论】:

      • 谢谢!我想知道这个plot_ly 对象是否可以使用包rayshader 更加完善?
      • 我怀疑仍然可以在情节中完成抛光。 (不过,我对此并不十分熟练。)我认为这些数据不会从rayshader 获得太多。
      猜你喜欢
      • 2014-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      相关资源
      最近更新 更多