我想在ggplot上绘制多条线条,这些线条来自一个单独的向量。
library(ggplot2)
carats <- c(2.5, 0.1)
ggplot(diamonds, aes(carat)) +
geom_histogram() +
geom_vline(aes(xintercept = carats[1]), col = "black", linetype = "dotted", size = 0.5) +
geom_vline(aes(xintercept = carats[2]), col = "black", linetype = "dotted", size = 0.5)
逐个添加它们,但我想避免这种方法添加使用draw_vline
代替:
hist <- ggplot(diamonds, aes(carat)) + geom_histogram()
draw_vline <- function(histogram, line_value){
hist + geom_vline(aes(xintercept = line_value), col = "black", linetype = "dotted", size = 0.5)
}
draw_vline(hist, carats[1])
这给了我错误:
Error in eval(expr, envir, enclos) : object 'line_value' not found
如何指定我的函数来处理不在ggplot env中的外部向量?
答案 0 :(得分:3)
aes()
用于从数据框中的列映射数据。您没有数据框,_vline
/ _hline/
/ _abline
甚至显示默认使用
xintercept
,yintercept
,slope
&amp; intercept
在 aes()
之外。如果您使用aes()
设置提供了呼叫,这也可以在data
中正常使用,但您没有。
library(ggplot2)
carats <- c(2.5, 0.1)
ggplot(diamonds, aes(carat)) +
geom_histogram() +
geom_vline(xintercept = carats, col = "black", linetype = "dotted", size = 0.5)