2012-02-25 2 views
2

У меня есть следующий кадр данныхggplot2 пунктирные линии для части сюжета

z = data.frame(x = seq(1,10),y = c(1,2,2,3,2,15,2,3,4,2)) 

Чтобы получить простую сюжетную линию прямо вперед. Например, это работает.

p = ggplot() + geom_line(data=z,aes(x,y)) 

Теперь я хочу обратить внимание на то, что точка данных со значением 15 является выбросом. Для этого я хотел бы сделать линию, соединяющую 5,2 до 6,15 и 7,2 пунктиром. Это можно сделать как-то в ggplot2?

+0

Я попытался сделать переменную 'linetype = rep (1,10); linetype [5: 7] = 2' и подавая это на 'aes (x, y, linetype = linetype)' в вашей 'geom_line', но получил ошибку, говоря, что тип линии должен быть постоянным * внутри * каждой строки. Поэтому я думаю, вам придется рисовать 3 отдельные строки: от 1 до 5 (черный), от 5 до 7 (пунктирный) и от 7 до 10 (черный). Но посмотрим, я могу ошибаться. –

+0

@ Mathematical.coffee Как насчет 'geom_path'? –

+0

Три отдельных линии - это подход, который я собирался взять. – broccoli

ответ

2

Вы можете сделать две строки, одну пунктирную для всех данных, затем одно твердое тело, исключающее точку выброса. Это похоже на работу:

ggplot() + geom_line(data=z,aes(x,y), linetype="dotted") + geom_line(data=z, aes(x, replace(y, y==15, NA))) 
Смежные вопросы