Le 23/06/2014 01:03, Dennis Murphy a écrit :
Hi:

There are times when lattice is easier than ggplot2 and times when the
converse is true. This is a case where ggplot2 is easier to code once
you understand what it is doing. I'm going to try to reproduce your
lattice graph in ggplot2 as follows:

library(ggplot2)

# Set up the rows of data.sim where points should be plotted
pidx <- seq(1, nrow(data.sim), by = 100)

# Default appearance, plotting lines and points; the shapes are
# specified in scale_shape_manual()
p <- ggplot(data.sim, aes(x = time, y = value, colour = essai, shape = essai)) +
     geom_vline(xintercept = 0, linetype = "dotted") +
     geom_line() +
     geom_point(data = data.sim[pidx, ]) +
     scale_shape_manual(values = 0:4)
p      # render it in the graphics window

# Change some background elements to more closely resemble the lattice
# plot:
#  * change the colors of ticks and tick labels
#  * remove grid lines
#  * put a bounding box on the graphics panel

p + theme_bw() +
    theme(panel.grid.major = element_blank(),
          panel.grid.minor = element_blank(),
          axis.text = element_text(color = "black"),
          axis.ticks = element_line(color = "black"),
          panel.border = element_rect(color = "black"))



After doing this, I realized your lattice code could be simplified
with the latticeExtra package:

library(latticeExtra)

# Set up the rows of data.sim where points should be plotted
pidx <- seq(1, nrow(data.sim), by = 100)

# Plot the lines
p1 <- xyplot(value ~ time, data = data.sim, groups = essai, type = "l",
              col = 1:5)

# Plot the points - notice the input data frame
p2 <- xyplot(value ~ time, data = data.sim[pidx, ], groups = essai,
              type = "p", pch = 1:5, col = 1:5)

# Plot the vertical line
p3 <- xyplot(value ~ time, data = data.sim,
              panel = function(x, y, ...)
                 panel.abline(v = 0, lty = "dotted", col = "black")
             )
p1 + p2 + p3

This is a consequence of the layering principles added to latticeExtra
a while back, which are designed to emulate the layered grammar of
graphics (ggplot2). Basically, each plot is a different piece, and you
can see that each trellis object is similar to the plot layers added
by geom_*() in ggplot2. This works largely because the scaling is the
same in all three graphs. One advantage of ggplot2 is that it produces
pretty decent legends by default. You have to work harder to achieve
that in lattice, particularly when you divide plots into layers like
this. (I think you'd need to add the same key = ... code to each plot,
but I didn't try it.) If the legend is irrelevant to you, then this
should be fine.

HTH,
Dennis

On Sun, Jun 22, 2014 at 2:09 PM, Laurent Rhelp <laurentrh...@free.fr> wrote:
Le 20/06/2014 21:50, Christoph Scherber a écrit :

Dear Laurent

for numeric x variables, you could try jitter:

xyplot(y~jitter(x,0.5))

Cheers
Christoph


Am 20.06.2014 21:45, schrieb Laurent Rhelp:
Hi,

   I like to use with xyplot (package lattice) the groups argument and
superpose.symbol to compare several curves. But, when there are a great many
points, the symbols are very close and the graph becomes unreadable. Would
there be an argument  or a tip not to draw all the symbols, for example the
symbols could be drawn only every x points, x given as an argument ?

Thanks
Best regards
Laurent



---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant
parce que la protection avast! Antivirus est active.

______________________________________________
R-help@r-project.org mailing list
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.

______________________________________________
R-help@r-project.org mailing list
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.

It is a very good idea !!! The symbols become readable but it is not an
actual answer to the issue.

I finally wrote the code below which works but I think there is certainly
something easier (shorter) !!!

Thanks

--o<----------------------------------------------------------------------------------------->o----
##
## 1. mock data
##
n <- 10000
time <- seq(-10*pi,10*pi,length=n)
essai <- c("essai1","essai2","essai3","essai4","essai5")

ll <- list()
for( i in 1:5){
    ll[[i]] <-data.frame(time=time,
                         value=sin(time+(pi/i)),
                         essai=essai[i])
}
data.sim <- do.call("rbind",ll)
##
## 2. lattice initialisation for the colors and the symbols
##
para.liste <- trellis.par.get()
superpose.symbol <- para.liste$superpose.symbol
superpose.symbol$pch <- seq(1,5)
superpose.symbol$col <- seq(1,5)
##
## 3. lattice code
##
xyplot(value ~ time,
        data=data.sim,
        nr=100,
        groups=essai,

        panel = function(x,y,subscripts,groups,nr,...) {
                        panel.abline(v=0, lty = "dotted", col = "black")
                        groupsnames <- levels(groups)
                        ng <- length(groupsnames)
                        for( i in 1:ng){
                             g <- groupsnames[i]
                             idg <- g == groups[subscripts]
                             superpose.symbol <-
trellis.par.get("superpose.symbol")
                             ncol <- superpose.symbol$col[i]
                             npch <- superpose.symbol$pch[i]

                             ## we draw only the line
panel.xyplot(x[idg],y[idg],type="l",col=ncol,...)

                             ## and then we draw a symbol every nr points
                             idx <- seq(1,length(x[idg]),by=nr)
                             idy <- seq(1,length(y[idg]),by=nr)
panel.points(x[idg][idx],y[idg][idy],col=ncol,pch=npch)
                         }
             },
        par.settings = list(
             superpose.symbol=superpose.symbol
            )
     )

--o<--------------------------------------------------------------------------------------->o----








---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant
parce que la protection avast! Antivirus est active.

______________________________________________
R-help@r-project.org mailing list
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.
very interesting, thank you for these explanations. I didn't know that it was possible to add graphs with lattice and I think I will learn ggplot ! I will try to add the key on the lattice graph.






---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce 
que la protection avast! Antivirus est active.

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to