I have a (dense) dataset that consist of 5 groups, so my data.frame looks something like x,y,group. I can plot this data and colour the points based on their group using:
p= ggplot(dataset, aes(x,y))
p = p + geom_point(aes(colour = group))
My problem is now only that I want to control which group is on top. At the moment it looks like this is randomly decided for (at least I don't seem to be able to figure out what makes something be the "top" dot). Is there any way in ggplot2 to tell geom_point what the order of dots should be?
To reorder the boxplot we will use reorder() function of ggplot2. By default, ggplot2 orders the groups in alphabetical order.
Using factor() function to reorder factor levels is the simplest way to reorder the levels of the factors, as here the user needs to call the factor function with the factor level stored and the sequence of the new levels which is needed to replace from the previous factor levels as the functions parameters and this ...
aes() is a quoting function. This means that its inputs are quoted to be evaluated in the context of the data. This makes it easy to work with variables from the data frame because you can name those directly. The flip side is that you have to use quasiquotation to program with aes() .
The function geom_point() adds a layer of points to your plot, which creates a scatterplot.
The order aesthetic is probably what you want.
library(ggplot2)
d <- ggplot(diamonds, aes(carat, price, colour = cut))
d + geom_point()
dev.new()
d + geom_point(aes(order = sample(seq_along(carat))))
The documentation is at ?aes_group_order
When you create the factor variable, you can influence the ordering using the levels parameter
f = factor(c('one', 'two'), levels = c('one', 'two'))
dataset = data.frame(x=1:2, y=1:2, group=f)
p = ggplot(dataset, aes(x,y))
p = p + geom_point(aes(colour = group))
Now, ggplot uses this order for the legend.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With