如何在[R]中自动添加图例?

5
plot(airquality$Wind, airquality$Ozone, col=airquality$Month)

如何在绘图中添加一个图例,以正确分配颜色,而不是手动找出哪个颜色代码对应哪个月份


编辑 订购后,您将获得一个非常漂亮的图表:

with(
    airquality,
    xyplot(airquality[order(Wind), ]$Ozone ~ airquality[order(Wind), ]$Wind,
    groups=Month, type="b",
    auto.key=list(title="Month", corner=c(0.95, 1.0)))
)

enter image description here

1个回答

5

airquality$Month中包含的数字定义了特定颜色(以及特定月份)。您可以要求R使用这些数字来构建图例:

legend('topright', month.abb[unique(airquality$Month)], 
       col=unique(airquality$Month), pch=21)

图片描述

另外,lattice 提供了 auto.key 参数来为其 xyplot 函数等提供帮助:

library(lattice)
xyplot(airquality$Ozone ~ airquality$Wind, groups=airquality$Month,
       auto.key=list(title="Month", corner=c(0.95, 1)))

在这里输入图片描述

编辑: @MrFlick在评论中提供的ggplot方法也可以使用。

library(ggplot2)
ggplot(airquality, 
       aes(Wind, Ozone, col=factor(Month, levels=1:12, labels=month.name))) + 
  geom_point() + scale_color_discrete(name="Month")

enter image description here


1
而且,为了“完整起见”,您也可以使用 library(ggplot2) 来完成这个任务:ggplot(airquality, aes(Wind, Ozone, col=factor(Month, levels=1:12, labels=month.name))) + geom_point() + scale_color_discrete(name="Month") - MrFlick
1
legend中使用col=factor(unique(airquality$Month)),在原始图中使用col=factor(airquality$Month)可能更安全,否则您将从5:9而不是从1:5索引默认的palette() - thelatemail
1
很好的观点,@thelatemail。如果你需要超过8种颜色,最好使用/创建一个颜色调色板(或提供所需数量颜色的向量),因为当按数字指定颜色时会重复使用颜色(即1、9、17等都是黑色)。 - jbaums

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接