绘制 3D 密度图使用 gglot/plot_ly

plot 3D density plot use gglot/plot_ly

我有一个 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 绘制此图,但失败了。任何人都可以阐明如何绘制这个吗?非常感谢您的建议!

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

这是一个非常接近的:


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"
)