Рисование многоугольника с помощью Rstudio: ошибка с границами - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать многоугольник, мне нужна вся область слева от кривой, заполненная цветом.

curve Но я получаю следующую ошибку.

polygon Я думаю, что есть проблема с неправильными границами (или координатами?), Но я понятия не имею, как я могу сделать это правильно.Вот мой код:

    > head(sd_10_20)
  row  w         sd
1   1 26 0.59090909
2   2 12 0.27272727
3   3  6 0.13636364
4   4  4 0.09090909
5   5  4 0.09090909
6   6  4 0.09090909

 plot(sd_10_20$sd, sd_10_20$row, ylim = rev(range(50,510)), col='black', type='l', ylab='tiefe [mm]', xlab='surface density [-]')
polygon(c(sd_10_20$sd[1],sd_10_20$sd,sd_10_20$sd[length(sd_10_20$sd)]),c(50,sd_10_20$row,510),col='darkolivegreen', border = NA, ylim = rev(range(50,510)))

1 Ответ

0 голосов
/ 27 сентября 2018

Это потому, что вы рисуете свой многоугольник с неправильными начальными и конечными точками.Для polygon представьте, что вы рисуете фигуру, не поднимая карандаш.Ваша начальная и конечная точки соединяются, и области в пределах значений x и линии окрашиваются в цвет.

Таким образом, чтобы закрасить область под вашими точками, что угодно, <x, вам нужны точки как минимум y, максимум y, и снаружи графика (поскольку 0 - ваш минимум, установите его на -1 и посмотрите, работает ли он) на все ваши значения x.Поэтому, используя приведенные ниже данные, это будет c(-1,sd_10_20$foo_sd,-1) для ваших x значений и c(min(sd_10_20$foo_row),sd_10_20$foo_row,max(sd_10_20$foo_row)) для ваших y значений.

sd_10_20 <- data.frame(foo_row = c(1:500), foo_w = c(runif(500, 1, 26)), foo_sd = c(runif(500, 0, 1.4)))

plot(sd_10_20$foo_sd, sd_10_20$foo_row, ylim = rev(range(50,510)), col='black', type='l', ylab='tiefe [mm]', xlab='surface density [-]')
polygon(c(-1,sd_10_20$foo_sd,-1),c(min(sd_10_20$foo_row),sd_10_20$foo_row,max(sd_10_20$foo_row)),col='darkolivegreen', border = NA, ylim = rev(range(50,510)))

...