How to reverse legend (labels and color) so high v

2020-02-10 02:09发布

whats the best way to invert the legend label order so the 7 is down and the 1 is upstairs?

ggplot legend challenge

df$day <- as.numeric(df3$day)
blues <- colorRampPalette(c('#132B43', '#56B1F7'))

p4 <- 
    ggplot(subset(df,feedback==1&stp>20), aes(x=correct, fill=day, colour=day)) +
    geom_histogram(colour="black", binwidth=10) +
    facet_grid(day ~ .) +
    ggtitle("Over-pronation histogram") +
    ylab("Count (150s period)") +
    xlab("% Steps in over-pronation") +guide_legend(reverse = false)

标签: r ggplot2 legend
3条回答
太酷不给撩
2楼-- · 2020-02-10 02:46

If you're putting it in numeric and it's a continuous scale, you're better off with scale_fill_continuous(trans = 'reverse') or scale_colour_continuous. Using your code, this would give:

ggplot(subset(df,feedback==1&stp>20), aes(x=correct, fill=day, colour=day)) +
    geom_histogram(colour="black", binwidth=10) +
    facet_grid(day ~ .) +
    ggtitle("Over-pronation histogram") +
    ylab("Count (150s period)") +
    xlab("% Steps in over-pronation")+
    scale_fill_continuous(trans = 'reverse')
查看更多
Explosion°爆炸
3楼-- · 2020-02-10 02:46

For continuous scales, guide_colorbar is required.

Here I reverse color direction. Then I reverse color and size order with different functions

library(tidyverse)
library(janitor)
iris %>% 
  as_tibble() %>% 
  clean_names() %>% 
  ggplot(aes(x = sepal_length,
             y = petal_width,
             size = sepal_width,
             color = petal_length)) +
  geom_point() +
  facet_wrap(~species,scales = "free") +
  #reverse color direction (the higher in value, the darker in color)
  scale_color_continuous(trans = 'reverse') +
  #edit legends
  guides(
    #reverse color order (higher value on top)
    color = guide_colorbar(reverse = TRUE),
    #reverse size order (higher diameter on top) 
    size = guide_legend(reverse = TRUE))
查看更多
家丑人穷心不美
4楼-- · 2020-02-10 03:00

Your code is quite strange, with false instead of FALSE and incorrectly placed guide_legend. The correct usage is (@Harpal gives a hint on that):

ggplot(data.frame(x=1:4, y=4:1, col=factor(1:4)), aes(x=x, y=y, col=col)) + 
  geom_point(size=10)
ggplot(data.frame(x=1:4, y=4:1, col=factor(1:4)), aes(x=x, y=y, col=col)) + 
  geom_point(size=10) + guides(colour = guide_legend(reverse=T))

enter image description here enter image description here

查看更多
登录 后发表回答