0

我想使用垂直线突出显示直方图中的度量平均值和中位数。红色表示平均值,蓝色表示中位数。我能够绘制两个不同的 kines,但无法根据指标订购颜色代码。

我创建了一个数据框 d,我将其传递给我的 ggplot geom_vline。数据框包含平均值和中位数的度量计算以及所需的颜色代码。

    d = data.frame(metric = c(
      mean(titanic_merge_clean$Age, na.rm = TRUE),
      median(titanic_merge_clean$Age, na.rm = TRUE) ),
      colr = c("red", "blue"))

    titanic_merge_clean %>%
     ggplot(aes(x = Age)) +
     geom_histogram() +
     geom_vline(data = d, aes(xintercept = metric,
     color = colr))

传递给 ggplot geom_vline 的数据帧 d

以下是 d 的样子:

在此处输入图像描述

[1]:https://i.stack.imgur.com/OlOPG.jpg

在生成的 ggplot 直方图中,上面的行顺序颠倒了。红色表示中位数,蓝色表示平均值。:

4

2 回答 2

2

由于您指定了一列颜色名称并将其映射到 ggplot 的颜色美学,我们可以使用scale_color_identity(). 您的示例不可重现,因此这是一个使用mtcars数据集的简单示例。

library(ggplot2)

my.data <- mtcars
my.data$color <- sample(c('red', 'blue'), nrow(my.data), replace = T)

g <- ggplot(data = my.data, aes(x = cyl, y = mpg, color = color)) +
  geom_point() +
  scale_color_identity(guide = 'legend')
print(g)

在此处输入图像描述

于 2019-02-09T21:04:27.327 回答
2

您需要在aes语句之外指定颜色

d = data.frame(metric = c(
  mean(titanic_merge_clean$Age, na.rm = TRUE),
  median(titanic_merge_clean$Age, na.rm = TRUE) ),
  colr = c("red", "blue"))

titanic_merge_clean %>%
 ggplot(aes(x = Age)) +
 geom_histogram() +
 geom_vline(data = d, aes(xintercept = metric), colour=d$colr)
于 2019-02-09T21:07:22.663 回答