Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

R rgl plot value not showing on axis

Tags:

r

axis

rgl

I'm using the rgl package in r to plot some data. As done here:

http://www.r-bloggers.com/creating-3d-geographical-plots-in-r-using-rgl/

For some reason the scale does not align with the graph.

I changed the scale of the X and Z axis to increase the relief, which I initially thought was causing the issue, but in the example below, even if I change 0.02 to 1 the issue occurs.

library(rgl)

rdata <- c(0.8926,0.8986,0.9478,0.9672,0.916,0.912,0.9324,0.9532,0.9488,0.9376,0.921,0.927,0.9728,0.956,0.9318,0.9202)
labs <-c(100,200,500,1000)

rmatrix <- matrix(rdata, nrow=4,ncol=4,)
dimnames(rmatrix) <- list(labs,labs)

y <- as.matrix(rmatrix)
x <- 0.02*(1:nrow(y))
z <- 0.02*(1:ncol(y))

rgl.surface(x, z, y, color="red", back="lines")
axis3d('x--', labels=row.names(rmatrix),color="black")

Why is this happening?

Thanks for your help! Mat

like image 390
MatAff Avatar asked Feb 02 '26 11:02

MatAff


1 Answers

Without supplying a value to the labels argument in axis3d, I get an axis with six tick marks. Since you supply a vector with only four values to the labels argument, it looks like axis3d recycles those values to cover all the tick marks.

Tell axis3d at what data values you'd like to place the tick marks by supplying a value to the at argument:

axis3d('x--', at = x, labels=row.names(rmatrix),color="black")

p.s. I had to add the following line before rgl.surface() to avoid getting a segfault

rgl.open()
like image 99
BenBarnes Avatar answered Feb 05 '26 03:02

BenBarnes



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!