2015-05-06 4 views
0

Рассмотрим график ниже, даваемый этим кодом:Как добавить образец вертикальной линии в gplot?

require(ggplot2) 
my_data<-c(70, 71, 75, 78, 78, 79, 80, 81, 84, 85, 87, 87, 90, 91, 95, 95, 96, 96, 97, 98, 98, 100, 101, 102, 102, 102, 102, 104, 104, 104, 107, 107, 109, 110, 110, 110, 111, 112, 113, 113, 114, 115, 118, 118, 118, 120, 124, 131, 137, 137, 139, 145, 158, 160, 162, 165, 169, 177, 179, 180)  


qplot(my_data,dist, geom="line")+xlab("x values")+ylab("Density")+ 
geom_point()+ 
ggtitle("cool graph Distribution") + 
geom_line(color="black", size=0.1) + 
geom_line(stat = "vline", xintercept = "mean", colour = "red", size=1.1) 

приведенный график выглядит следующим образом: enter image description here

Моя цель состоит в том, чтобы добавить еще одну синюю линию на графике, что:

  1. Пересечение с кривой
  2. Показать значение по оси X
  3. Добавить заголовок поверх него

визуализировать его, он должен выглядеть следующим образом: enter image description here

Я знаю, как добавить geom_line, но она идет снизу вверх, я хочу, чтобы «один точка пересечения 'с кривой.

+0

Возможный дубликат [Добавление вертикальной линии в сюжет ggplot] (http://stackoverflow.com/questions/19622063/adding-vertical-line-in-plot-ggplot) –

+2

Не согласен с дублированием: эти ответы используют 'geom_vline 'который не будет работать для этого вопроса. (OP хочет, чтобы линия, которая переходила только от y = 0 к линии распространения, а не вплоть до вершины графика). Вероятно, есть и другие дубликаты, но связанный выше не подходит. – Gregor

ответ

3

Это действительно более или менее то же самое. Я предпочитаю использовать annotate для таких вещей. (Я хотел бы сделать вашу красную линию с аннотирования, а также лично.) Просто вычислить, где вы хотите вещи, чтобы пойти и добавить их к сюжету:

qplot(my_data,dist, geom="line")+xlab("x values")+ylab("Density")+ 
    geom_point()+ 
    ggtitle("cool graph Distribution") + 
    geom_line(color="black", size=0.1) + 
    geom_line(stat = "vline", xintercept = "mean", colour = "red", size=1.1) + 
    annotate(geom = "segment", x = 98, xend = 98, y = 0, 
      yend = dnorm(98, mean = mean(my_data), sd = sd(my_data)), 
      color = "blue") + 
    annotate(geom = "text", x = 98, y = -.02 * max(dist), label = "98") 

Я оставил титул в верхней части как " упражнение для читателя », это должно быть довольно просто, основываясь на уже существующих.

+0

Отлично! благодаря – adhg

Смежные вопросы