R 三维球形极坐标图,第四维映射到另一个变量
首先,我找到了一些关于这类主题的线索,但似乎没有一条能完全满足我的要求,或者至少我在试图解决这一问题时真的有点笨,所以我很感激其他人的意见 我有4个变量组成一个极坐标图,R,θ,φ和a,其中a代表一个测量值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
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))