Разметка точек на графике в R - PullRequest
0 голосов
/ 05 марта 2019

Предположим, я хотел бы отметить и обозначить (с их соответствующими координатами x, y) максимальные, минимальные точки кривой с черной линией и 2 точки, где p = 0,2 пересекает кривую с черной линией.Как я могу это сделать?

library("ggplot2")

rho <- function(theta) {theta / (1+theta^2)}

ggplot(data.frame(x=c(-6,6)), aes(x=x)) + stat_function(fun=rho2, geom="line") + ylab(expression(rho)) + xlab(expression(theta)) + 
        ggtitle("Autocorrelation at Lag 1 of MA(1)") +
        geom_hline(yintercept=0.2, color = "blue", linetype = "dashed") +
        scale_color_manual(values = c(NA, "red"))

enter image description here

1 Ответ

0 голосов
/ 05 марта 2019

Максимум и минимум можно получить с помощью функции optimize.

optimize(rho, c(-6,6))
$minimum
[1] -1.000002
$objective
[1] -0.5

optimize(rho, c(-6,6), maximum=TRUE)
$maximum
[1] 1.000002
$objective
[1] 0.5

Вы можете добавить его к графику, используя geom_point.

MIN = optimize(rho, c(-6,6))
MAX = optimize(rho, c(-6,6), maximum=TRUE)
Points = data.frame(x=c(MIN[[1]][1], MAX[[1]][1]), 
        y=c(MIN[[2]][1], MAX[[2]][1]))

P1 = ggplot(data.frame(x=c(-6,6)), aes(x=x)) + stat_function(fun=rho, geom="line") + ylab(expression(rho)) + xlab(expression(theta)) + 
        ggtitle("Autocorrelation at Lag 1 of MA(1)") +
        geom_hline(yintercept=0.2, color = "blue", linetype = "dashed") +
        scale_color_manual(values = c(NA, "red"))

P1 + geom_point(data=Points, size=2, aes(x,y) )

Plot with max and min added

...