【发布时间】:2018-03-29 23:58:05
【问题描述】:
我想使用ggplot 创建一个图表,用一种颜色绘制单个数据点,用另一种颜色绘制平均值,然后有一个解释颜色的图例。以下是三种不太奏效的尝试:
library(ggplot2)
library(dplyr)
# Create new tbl_df with average hp for each transmission
avghp <- mtcars %>% group_by(am) %>% summarize(hp=mean(hp))
# Correct dots and colors, no legend
g1 <- ggplot(mtcars, aes(x=am, y=hp)) +
geom_point(colour="blue" )+
geom_point(data=avghp, colour="red", size=4)
# Legend, but colors changed
g2 <- ggplot(mtcars, aes(x=am, y=hp)) +
geom_point(aes( colour="Individual"))+
geom_point(data=avghp, aes(colour="Average"), size=4)
# Correct colors in graph, but not in legend
g3 <- ggplot(mtcars, aes(x=am, y=hp)) +
geom_point(aes(fill="Individual"), colour="blue")+
geom_point(data=avghp, aes(fill="Average"), colour="red", size=4)
g1 以蓝色显示单个数据点,以红色显示平均值,但没有图例,因为颜色不在 aes() 中。 g2 创建图例,但不使用与 g1 中相同的颜色。 g3 将颜色的定义移到aes() 之外并使用fill() 创建图例,但图例上的点都是蓝色的。
我怎样才能创建像g3 这样的东西,但是图例显示一个红点表示平均 hp,而一个蓝色表示个人?或者,如何在g2 中指定特定颜色?
【问题讨论】:
-
理论上没有必要为蓝色点添加图例,因为它们属于同一组。通常您将此信息添加到标题“某物的散点图”
-
大多数时候这是一个很好的提示,但是 1) 我的听众需要一点点的支持,以及 2) 这是我想要做的事情的简化。在某些情况下,我会有三个重叠的图表。