如何重新排序图例中的项目?

时间:2016-07-27 17:16:45

标签: r ggplot2

我试图更改图例项目的显示顺序。我在这上花了大约一个小时,没有结果。

以下是一个示例设置:

library(ggplot2)
set.seed(0)
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10'))

这是我尝试过的众多事情之一:

ggplot(d, aes(x = x, y = y)) + 
    geom_point(size=7, aes(color = a, order = as.numeric(a)))

enter image description here

(我天真的希望,当然,传奇项目将以数字顺序显示:1,3,10。)

2 个答案:

答案 0 :(得分:18)

ggplot通常会根据因素的levels()对您的因子值进行排序。你最好确保这是你想要的顺序,否则你将在R中使用很多功能,但是你可以通过操纵色标来手动改变它:

ggplot(d, aes(x = x, y = y)) + 
    geom_point(size=7, aes(color = a)) + 
    scale_color_discrete(breaks=c("1","3","10"))

答案 1 :(得分:5)

可以通过将a列中的值重新排序并更改为因子来管理图例标签的顺序:d$a <- factor(d$a, levels = d$a)

所以你的代码看起来像这样

library(ggplot2)
set.seed(0)
d <- data.frame(x = runif(3), y = runif(3), a = c('1', '3', '10'))

d$a <- factor(d$a, levels = d$a)

ggplot(d, aes(x = x, y = y)) + 
  geom_point(size=7, aes(color = a))

和ouptut enter image description here

注意,比现在的传说:1是红色,3是绿色,10是蓝色