[R] Plotting series marked with a symbol on every nth data point, preferably in ggplot...
Tribo Laboy
tribolaboy at gmail.com
Mon Feb 25 08:45:58 CET 2008
Hello Gabor and Charilaos
Thanks for the help. I did not realize that the legend argument can
take both the symbol and the line. Following your suggestions I have
come with the code that follows.
I realized that I can use the 'legend' function to draw over ggplot2
produced plot, so that is a good start, but I am not quite sure how to
prepare the data and plot it in ggplot. If I use print with option
pretty = FALSE on the object produced by ggplot, it displays the graph
without legend, so I can overlay the legend from traditional graphics.
This option (pretty = FALSE), however, also removes the X-label and
Y-label from the plot.
Thanks again.
Maybe someone can help with the ggplot version of this thing?
Regards,
TL.
#-----------------------START CODE SNIPPET-----------------------------------
#-------------------------------------------------------------
# Try traditional graphics first
#-------------------------------------------------------------
# 1 . Generate signal-like data
#
x1 <- c(26:300)
y1<- sin(0.1*x1) + rnorm(275,mean = 0,sd = 0.1);
x2 <- c(1:350)
y2<-sin(0.1*x2+10) + rnorm(350,mean = 0,sd = 0.1);
x3 <- c(41:280)
y3<-sin(0.1*x3+30) + rnorm(240,mean = 0,sd = 0.1);
# 2 . Plot the three signals (and symbols)
#
# How many points to skip:
N = 15;
# Draw empty axes with limits and labels
plot(NA, NA,type="n", xlim = c(0,400),ylim = c(-1.5,1.5),xlab
="Time",ylab ="Amplitude" )
# Draw the lines
pch1 <- c(15,rep(NA,N));
pch2 <- c(16,rep(NA,N));
pch3 <- c(17,rep(NA,N));
lines(x1, y1, type = "o", col = "red", pch=pch1, cex=1.5, lwd=1.5, lty=1);
lines(x2, y2, type = "o", col = "green", pch = pch2, cex=1.5, lwd=1.5, lty=2)
lines(x3, y3, type = "o", col = "blue", pch = pch3, cex=1.5, lwd=1.5, lty=3)
#
# 4 . Add the legend
#
legend("topright",col=c("red","green","blue"), pch=c(15,16,17),
lty=c(1,2,3), legend=c("series 1", "series 2", "series 3"),
inset=0.05, bg='white')
#-------------------------------------------------------------
# Try the same thing with GGPLOT
#-------------------------------------------------------------
dataset <- rbind(data.frame(Test = "Test 1", x = x1, y = y1),
data.frame(Test = "Test 2", x = x2, y = y2),
data.frame(Test = "Test 3", x = x3, y = y3));
# 2 . Plot the three signals (and every point as a symbol)
#
ggp <- ggplot(data = dataset, aes(x = x, y = y, colour = Test),) + geom_line() +
geom_point()
print(ggp,pretty = FALSE) #Do not plot the legend, but this also
removes the x and y labels
#
# 4 . Add the legend (Traditional graphics) over the GGPLOT
#
legend("topright",col=c("red","green","blue"), pch=c(15,16,17),
lty=c(1,2,3), legend=c("Test 1", "Test 2", "Test 3"), inset=0.05,
bg='white')
#--------------------------END CODE SNIPPET-------------------------------
On Mon, Feb 25, 2008 at 2:05 PM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> Try this:
>
> pch <- c("+", ""); lwd <- 1
> plot(1:10, type = "o", pch = pch, lwd = lwd)
> legend("topleft", legend = "data", pch = pch, lwd = lwd)
>
>
>
>
> On Sun, Feb 24, 2008 at 11:01 PM, Tribo Laboy <tribolaboy at gmail.com> wrote:
> > Hello!
> >
> > I am working with signals and a plot of several signals on the same
> > axes can get quite messy. With lines that are very fractured,
> > distinction by only the linestyle is not very clear. If I add symbols
> > to the plot however, there are so many symbols, that they overplot and
> > the whole plot is unreadable once again. I am looking for advice on
> > how to make a plot with continuous lines and symbols appearing at
> > every nth point. An example of this problem and a solution in SAS can
> > be found here:
> > www2.sas.com/proceedings/sugi26/p072-26.pdf
> >
> > The obvious solution would be to extract the n-th point from the
> > dataset and overplot as a new line with symbols, but this does not
> > change the legend, does it? How can I then have a line+symbol in the
> > legend represent my curve?
> >
> > Now, ideally I would prefer a solution in ggplot, because of the ease
> > of plotting and changing the plot labels and other properties.
> > However, I remember, Hadley mentioned that he is still working on a
> > new version to have combined line+symbol plots, and probably he hasn't
> > finished that yet. So any advice is welcome.
> >
> > Regards,
> >
> > TL
> >
> > PS. I did RTFM and I am not posting code, because at this time I
> > expect a general outline how to do it and what commands to lookup, not
> > code.
> >
> > ______________________________________________
> > R-help at 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.
> >
>
More information about the R-help
mailing list