Выделение точек на графике в R

#r #ggplot2 #outliers

#r #ggplot2 #выбросы

Вопрос:

Предположим, я хотел бы выделить и пометить (с соответствующими координатами 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"))
  

введите описание изображения здесь

Комментарии:

1. Что означает «выделить»?

2. @OTStats отображаются в виде точек с координатами и с меткой декартовых значений (x, y).

3. Итак, вы просто хотите, чтобы отображались локальные минимальные / максимальные значения. Использование языка имеет значение 🙂

Ответ №1:

Вы можете получить максимум и минимум, используя 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) )
  

График с добавлением max и min

Комментарии:

1. Привет, G5W, спасибо за твое сообщение! Мне было интересно, можем ли мы вместо этого выделить это и пометить на графике.