【问题标题】:Unique colors for each series in ggplot in graph and legend图表和图例中ggplot中每个系列的唯一颜色
【发布时间】: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) 这是我想要做的事情的简化。在某些情况下,我会有三个重叠的图表。

标签: r ggplot2 colors legend


【解决方案1】:

您可以使用scale_color_manual手动设置颜色

g2 + scale_color_manual("Legend", values = c("red", "blue"))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-11
    • 2017-01-16
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2022-06-22
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多