Reputation: 65
I am trying to make a geom_density_ridges_gradient()
graph in R, and want to order the y-axis in chronological order of release (a separate variable in my dataframe). How can I edit my ggplot()
command to make this happen? Here is what I currently have, and attached is the output. Or, for simplicity sake, how can I manually order the y-axis categories?
ggplot(ts, aes(x = danceability, y = album_name)) +
geom_density_ridges_gradient(scale = .9) +
theme_light() +
labs(title = "Danceability by Albums",
x = "Danceability",
y = "Album Name")
Upvotes: 1
Views: 4321
Reputation: 24722
If the column in ts
by which you would like to order y
is called release_date
, you can try reorder()
, with decreasing=T
ggplot(ts, aes(x = danceability, y = reorder(album_name, release_date,decreasing=T)) +
geom_density_ridges_gradient(scale = .9) +
theme_light() +
labs(title = "Danceability by Albums",
x = "Danceability",
y = "Album Name")
While no data were provided, we can see this in action here:
set.seed(123)
data = data.frame(y=rep(letters[1:3],100), x=rnorm(300), o=rep(c(1,3,2),100))
gridExtra::grid.arrange(
ggplot(data, aes(x,y)) + geom_density_ridges_gradient(scale=0.9) + ggtitle("Unordered"),
ggplot(data, aes(x,reorder(y,o,decreasing=T))) + geom_density_ridges_gradient(scale=0.9) + ggtitle("Ordered")
)
Upvotes: 4