我的数据:
dat <- data_frame(x = c(1,2,3,4,5,6), y = c(2,2,2,6,2,2))
我希望在点(x = 4,y = 6)旁边显示此表达式:
expression <- bquote(paste(frac(a[z], b[z]), " = ", .(dat[which.max(dat$y),"y"] %>% as.numeric())))
但是,当我在ggplot中使用此表达式时:
ggplot() +
geom_point(data = dat, aes(x = x, y = y)) +
geom_label(data = dat[which.max(dat$y),], aes(x = x, y = y, label = expression))
我收到此错误消息:
Error: Aesthetics must be either length 1 or the same as the data (1): label
答案 0 :(得分:2)
您可以使用以下代码(保留数据和表达式的定义):
与您的问题无关,但是:总是最好在aesthetics
调用中定义ggplot
,并在随后的函数调用中重新使用它。如果需要,您可以覆盖定义,如以下geom_label
ggplot(data = dat, aes(x = x, y = y)) +
geom_point() +
geom_label(data = dat[4,], label = deparse(expression), parse = TRUE,
hjust = 0, nudge_x = .1)
hjust
和nudge_x
用于相对于点定位标签。人们可能会争辩说也使用nudge_y
来获得图片中的整个标签。
产生此情节:
请让我知道这是否是您想要的。