我想使用垂直线突出显示直方图中的度量平均值和中位数。红色代表均值,蓝色代表中位数。我能够绘制两种不同的颜色,但是无法按度量标准排列颜色代码。
我创建了一个数据框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的样子:
在生成的ggplot直方图中,行的顺序已颠倒。红色表示中位数,蓝色表示平均值。
答案 0 :(得分: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)
答案 1 :(得分: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)