[R] add points to lattice cloud plot (3D scatter)
Duncan Mackay
du|c@|m@ @end|ng |rom b|gpond@com
Fri Apr 5 03:54:45 CEST 2019
Sorry my fingers slipped and hit the send button.
One further thing is that I do not know why distribute.type = TRUE for cloud
did not work
Duncan Mackay
Department of Agronomy and Soil Science
University of New England
Armidale NSW 2350
-----Original Message-----
From: Duncan Mackay [mailto:dulcalma using bigpond.com]
Sent: Friday, 5 April 2019 12:48
To: 'Luigi Marongiu'
Cc: 'r-help'
Subject: RE: [R] add points to lattice cloud plot (3D scatter)
Hi all
I know it is a bit late but I have been on other things.
This is a custom solution as it requires manual tweeking for further use in
getting the letter positioning
As cloud is fairly rigid I made a duplicate dataset and reduced the x and y
values by 0.1 as a trial.
Will need tweeking possibly in the z direction if needed.
I then combinded the 2 to form a third to which I assigned a grouping factor
G
df = data.frame(Name = c("A", "B", "C", "D", "E"),
x_axis = c(-0.591, 0.384, -0.384, -0.032, 0.754),
y_axis = c(-1.302, 1.652, -1.652, 0.326, 0.652),
z_axis = c(1.33, 1.33, 2.213, 0.032, -0.754),
stringsAsFactors = FALSE)
df2 = df
df2[,2] <- df2[,2]-.1
df2[,3] <- df2[,3]-.1
df3 <- rbind(df,df2)
df3$G <- rep(letters[1:2],ea= 5)
After trying to use groups with cloud but this did not work even with
distribute.type = TRUE, I then tried panel.superpose but failed.
Using trellis.print works but ALL the axes must be the same it then it was a
simple matter of superimposing them
x1 =
cloud(z_axis ~ x_axis * y_axis, data = df,
xlab = "X",
ylab = "Y",
zlab = "Z",
xlim = c(-0.691,0.754),
ylim = c(-1.752,1.652),
zlim = c(-0.754,2.213),
scales = list(arrows = FALSE),
pch = c(rep(16,5), 64:69),
type = "b",
col = "red",
cex = 1.5)
x2 =
cloud(z_axis ~ x_axis * y_axis, data = df2,
xlab = "X",
ylab = "Y",
zlab = "Z",
xlim = c(-0.691,0.754),
ylim = c(-1.752,1.652),
zlim = c(-0.754,2.213),
scales = list(arrows = FALSE),
pch = 65:70,
col = "black",
type = "p",
cex = 1.5)
)
print(x1, position = c(0,0,1,1), more = TRUE)
print(x2, position = c(0,0,1,1), more = FALSE)
-----Original Message-----
From: R-help [mailto:r-help-bounces using r-project.org] On Behalf Of Luigi
Marongiu
Sent: Friday, 1 March 2019 02:39
To: Duncan Murdoch
Cc: r-help
Subject: Re: [R] add points to lattice cloud plot (3D scatter)
I see. I have been thinking of superimposing two plots with
par(new=TRUE), but how could I remove all the graphic parameters
(axes, background etc) keeping only the actual points in lattice? (if
possible).
Tx
On Thu, Feb 28, 2019 at 3:53 PM Duncan Murdoch <murdoch.duncan using gmail.com>
wrote:
>
> On 28/02/2019 5:39 a.m., Luigi Marongiu wrote:
> > Dear all,
> > is it possible to add points to a lattice cloud plot (3D scatter)? I
> > can plot the main data, but what if I wanted to add another point. In
> > R there is the high level plotting function plot(), then the low level
> > points() or lines() etc. What is the equivalent for lattice?
>
> I don't know for sure, but I don't think you can do that in lattice.
> The scatterplot3d::scatterplot3d function returns enough information to
> do this, but I don't think lattice::cloud does. But even
> scatterplot3d::scatterplot3d won't necessarily get it right if points
> hide others that are behind them. It uses the "painter's algorithm",
> and that needs everything to be drawn in just the right order, which you
> probably won't get if you draw things in several calls.
>
> You can draw things in arbitrary order using rgl::plot3d or related
> functions, but you'll need to do more work yourself to get an array of
> plots like lattice gives.
>
> Duncan Murdoch
>
>
> >
> > Thank you
> >
> >
> >>>>
> >
> > df = data.frame(Name = c("A", "B", "C", "D", "E"),
> > x_axis = c(-0.591, 0.384, -0.384, -0.032, 0.754),
> > y_axis = c(-1.302, 1.652, -1.652, 0.326, 0.652),
> > z_axis = c(1.33, 1.33, 2.213, 0.032, -0.754),
> > stringsAsFactors = FALSE)
> >
> > cloud(z_axis ~ x_axis * y_axis, data = df,
> > xlab = "X", ylab = "Y", zlab = "Z",
> > pch = 16, col = "red", type = "b", cex = 1.5,
> > ltext(x=df$x_axis, y=df$y_axis, z=df$z_axis,
> > labels=df$Names, pos=1, offset=1, cex=0.8)
> > )
> >
> > df2 = data.frame(Name = "F",
> > x_axis = 0.891,
> > y_axis = 2.302
> > z_axis = -1.83,
> > stringsAsFactors = FALSE)
> >
>
--
Best regards,
Luigi
______________________________________________
R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
More information about the R-help
mailing list