[R] Control of x-axis variable ordering in ggplot

Hadley Wickham h.wickham at gmail.com
Fri Oct 23 13:15:08 CEST 2015


You have two problems:

* geom_line() always draws from right-to-left
* you're defining colour outside of the plot in a very non-ggplot2 way.

Here's how I'd do it:

library(ggplot2)
data <- data.frame(
  x = rep(1:4, each = 25),
  y = rep(1:25, times = 4),
  g = rep(1:4, each = 25)
)
data$x <- data$x + 0.005 * data$y ^ 2 - 0.1 * data$y + 1

ggplot(data, aes(x, y, colour = factor(g))) +
  geom_point() +
  geom_path()


Alsonotethatcodeismucheasiertoreadifyouusespaces;)

Hadley

On Thu, Oct 22, 2015 at 8:46 PM, sbihorel
<Sebastien.Bihorel at cognigencorp.com> wrote:
> Hi,
>
> Given a certain data.frame, the lattice xyplot function will plot the data
> as.is and join the data point in the order of the data frame. It is my
> (probably flawed) understanding that, using the same data frame, ggplot
> orders the data by increasing order of the x-axis variable. Can one control
> this behavior?
>
> Thanks
>
> Sebastien
>
> Code example
>
> library(lattice)
> library(ggplot2)
>
>
> data <- data.frame(x=rep(1:4,each=25),
>                    y=rep(1:25,times=4),
>                    g=rep(1:4,each=25))
> data$x <- data$x + 0.005*(data$y)^2-0.1*data$y+1
>
> col <- 3:7
>
> xyplot(y~x,data=data,groups=g,type='l',col=col)
>
> ggplot(data, aes(x,y,group=g)) + geom_point(colour=col[data$g]) +
>   geom_line(colour=col[data$g])
>
> ______________________________________________
> R-help at 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.



-- 
http://had.co.nz/



More information about the R-help mailing list