R 三维球形极坐标图,第四维映射到另一个变量

R 三维球形极坐标图,第四维映射到另一个变量,r,polar-coordinates,geometry-surface,4d,spherical-coordinate,R,Polar Coordinates,Geometry Surface,4d,Spherical Coordinate,首先,我找到了一些关于这类主题的线索,但似乎没有一条能完全满足我的要求,或者至少我在试图解决这一问题时真的有点笨,所以我很感激其他人的意见 我有4个变量组成一个极坐标图,R,θ,φ和a,其中a代表一个测量值 library(data.table) library(viridis) library(plot3D) library(plotly) df<-data.table(theta = seq(0,2*pi, length.out = 100)) df<-df[,.(phi= s

首先,我找到了一些关于这类主题的线索,但似乎没有一条能完全满足我的要求,或者至少我在试图解决这一问题时真的有点笨,所以我很感激其他人的意见

我有4个变量组成一个极坐标图,R,θ,φ和a,其中a代表一个测量值

library(data.table)
library(viridis)
library(plot3D)
library(plotly)

df<-data.table(theta = seq(0,2*pi, length.out = 100))
df<-df[,.(phi= seq(0,pi/2, length.out = 100)),.(theta)]
df[, A:=rnorm(10000)]
#I've included r set to one just for the example's sake
df[, r:=1]
产生:

现在这是正确的方向,但我希望能够: A) 将其作为彩色表面,而不是一系列点, B) 能够像使用rgl软件包一样旋转它, c) 有一个带标签的极轴,而不是笛卡尔坐标箱,尽管我认为这个完全超出了范围

我尝试过的其他软件包都没有成功,它们往往需要将极坐标转换成规则间隔的笛卡尔坐标矩阵,然后不总是允许您映射颜色(或者至少我不知道如何将a映射到x、y和z矩阵)

有谁有更好的主意吗


谢谢。

你用
rgl
试过了吗?我试过了,我唯一能用的是plot3d:
plot3d(df$x,df$y,df$z)
但我无法得到要映射的颜色。Surf3d似乎需要婚姻,我很难理解!
p <- plot_ly(
  type = 'scatterpolar',
  mode = 'lines',
  r = df[theta == 0]$A,
  theta = (df[phi == 0]$theta)*(180/pi),
)
p
#convert to cartesian

df[,x:=r*cos(theta)*sin(phi)]
df[,y:=r*sin(theta)*sin(phi)]
df[,z:=r*cos(phi)]

#plot

scatter3D(x = df$x, 
          y = df$y, 
          z = df$z, 
          zlim = c(-1,1),
          ylim = c(-1,1),
          xlim = c(-1,1),
          pch =18,
          bty = 'b2',
          colvar = df$A,
          col=inferno(200))