我想在我的绘图上绘制几条垂直线,并为每个相应的 vline 绘制一个图例。
阅读这篇文章后,这是我实现的:
set.seed(99)
df.size <- 1e6
my.df <- data.frame(dist = rnorm(df.size, mean = 0, sd = 2))
library(ggplot2)
ggplot(my.df, aes(x=dist)) + geom_histogram(binwidth = 0.5)
vline1.threshold <- mean(my.df$dist)
vline2.threshold <- mean(my.df$dist) + 3*sd(my.df$dist)
现在的情节:
g <- ggplot(my.df, aes(x = dist)) +
geom_histogram(binwidth = 0.5) +
geom_vline(aes(color = "vline1", xintercept = vline1.threshold)) +
geom_vline(aes(color = "vline2", xintercept = vline2.threshold)) +
scale_color_manual("Threshold", values = c(vline1 = "red", vline2 = "blue"), labels = c("Mean", "Mean + 3*SD"))
system.time(print(g))
这很好用:
但它很慢:
utilisateur système écoulé
51.667 1.883 53.652
(对不起,我的系统是法语的)
但是,当我这样做时(在 aes 之外使用 xintercept):
g <- ggplot(my.df, aes(x = dist)) +
geom_histogram(binwidth = 0.5) +
geom_vline(aes(color = "vline1"), xintercept = vline1.threshold, color = "red") +
geom_vline(aes(color = "vline2"), xintercept = vline2.threshold, color = "blue") +
scale_color_manual("Threshold", values = c(vline1 = "red", vline2 = "blue"), labels = c("Mean", "Mean + 3*SD"))
system.time(print(g))
图例不显示:
但它要快得多:
utilisateur système écoulé
1.193 0.270 1.496
我怎样才能两全其美,即传奇,快速显示?