2014-06-24 2 views
1

У меня возникли проблемы с пониманием функции сегментов в базовой графике в контексте моей конкретной проблемы.Функция сегмента R с интервалами

x <- 0:1000 
y <- c(0, 40000, 80000) 

Теперь я хочу нарисовать график с линией от 0 до 200 при y = 0. Другая линия от 200 до 500 при y = 40000, а последняя строка от 500 до 1000 при y = 80000.

plot(x,y,type="n") 
segments(0,0,200,40000,200,40000,500,8000,1000) 
points(0,0,200,40000,200,40000,500,8000,1000) 
points(0,0,200,40000,200,40000,500,8000,1000) 

Я считаю неправильным определять точные сегменты здесь. Если х, где 0: 3, я бы знал, что делать. Но что мне делать в случае интервалов?

+1

Ну, для начала ваш 'участок()' называют Безразлично 't работают как 'x' и' y' имеют разную длину. Во-вторых, вы передаете несколько аргументов в «сегменты», где, если вы читаете «сегменты», вы заметите, что для этого нужны * векторы * координат 'x0' и' y0' и 'x1' и' y1', которые являются x и y для рисования от и до соответственно. Ваши вызовы 'segment()' и 'points()' просто неправильны. –

ответ

2

Вам необходимо предоставить векторы координат x0 и y0 и x1 и y1 которые являются х и у координаты, чтобы сделать из и соответственно. Рассмотрим следующий рабочий пример:

x <- seq(0, 1000, length = 200) 
y <- seq(0, 80000, length = 200) 
plot(x,y,type="n") 

from.x <- c(0, 200, 500) 
to.x <- c(200, 500, 1000) 
to.y <- from.y <- c(0, 40000, 80000) # from and to y coords the same 

segments(x0 = from.x, y0 = from.y, x1 = to.x, y1 = to.y) 

Это производит следующий участок

enter image description here

+0

Большое спасибо за это! – user3347232

0

Быстрая версия ggplot:

library(ggplot2) 
x <- seq(0, 1000, length = 200) 
y <- seq(0, 80000, length = 200) 
plot(x,y,type="n") 

dta <- data.frame(x= from.x,y=from.y, xend=to.x, yend=to.y) 
ggplot(dta, aes(x=x, y=y, xend=xend, yend=yend)) + 
    geom_segment()+ 
    geom_point(shape=16, size=4) + 
    geom_point(aes(x=xend, y=yend), shape=1, size=4)