Мне удалось создать график в R без всех более толстых красных линий и чисел (70,28), как поместить его на график, как это (я уже знаю значения точки, которую я хочу отобразить в сюжет)?

enter image description here

1
Metariat 16 Окт 2015 в 17:00

2 ответа

Лучший ответ

Вам нужно использовать segments и axis. В вызове segments я использую -1000 в качестве начальной точки, чтобы убедиться, что линия идет до оси.

#plot values
x <-1:100
y <-seq(1,200,2)

#known point
xx <- 65
yy <- 130

plot(x,y,type="l")
segments(x0=-1000, y0=yy, x1 = xx, y1 = yy,col="red") #horiz segment
segments(x0=xx, y0=-1000, x1 = xx, y1 = yy,col="red") #vert segment
axis(1,xx,xx, col="red", col.lab="red",col.axis="red") #x-axis point
axis(2,yy,yy, col="red", col.lab="red",col.axis="red") #y-avis point

enter image description here

Если вы хотите, чтобы вертикальная красная линия остановилась на 0 во втором сегменте (как в вашем примере), используйте:

segments(x0=xx, y0=min(y), x1 = xx, y1 = yy,col="red") #vert segment
1
Pierre Lapointe 16 Окт 2015 в 15:25

Чтобы добавить на график линии пересечения, используйте abline.

abline(v = x) добавит вертикальную линию в точке x.

abline(h = y) добавит вертикальную линию в точке y.

Однако эти строки охватят весь сюжет. Чтобы остановить их на пересечении, вам нужно будет использовать lines вместо этого, у которого есть несколько более сложные параметры (так как вам нужно указать как начальные, так и конечные координаты).

Вы также можете удалить пространство между графиком и осями с помощью xaxs = 'i':

plot(speed ~ dist, cars, xaxs = 'i', yaxs = 'i')
lines(c(0, 40), c(10, 10), col = 'red', lwd = 2)
lines(c(40, 40), c(0, 10), col = 'red', lwd = 2)

Наконец, text можно использовать для вставки соответствующего текста.

1
Konrad Rudolph 16 Окт 2015 в 14:25