Как добавить разные цвета фона между линиями в точечной диаграмме, используя R? - PullRequest
0 голосов
/ 08 октября 2019

Я хочу использовать R, чтобы нарисовать график рассеяния следующим образом:

enter image description here

Это график рассеяния. И на нем три строчки. Под первой строкой (x = (3,0), y = (0,2)) я хочу, чтобы цвет фона был светло-красным. И красный находится между первой и второй строкой (x = (4,0), y = (0,4)). Затем темно-красный находится между второй и третьей строкой (x = (8,0), y = (0,5)).

Допустим, данные разброса:

a=data.frame(x=c(1,2,3,4,5,6,7,8,9,10),
             y=c(1,4,2,6,4,8,2,5,1,7))

Как мне этого добиться?

1 Ответ

1 голос
/ 08 октября 2019

Используйте geom_point для данных разброса и geom_polygon для рисования и заполнения областей.

geom_polygon соединяет точки xy, начальная и конечная точки соединены, а внутренняя часть закрашена заливкой (подробнее здесь)

В следующем примере все полигоны начинаются с 0,0

pol.3 = data.frame(x=c(0,8,0), y=c(0,0,5))
pol.2 = data.frame(x=c(0,4,0), y=c(0,0,4))
pol.1 = data.frame(x=c(0,3,0), y=c(0,0,2))

ggplot(a) + 
  geom_polygon(data=pol.3, aes(x=x, y=y), fill = "blue") +
  geom_polygon(data=pol.2, aes(x=x, y=y), fill = "green") +
  geom_polygon(data=pol.1, aes(x=x, y=y), fill = "red") + 
  geom_point(aes(x=x, y=y)) 

enter image description here

Если вы не хотите, чтобы ваши полигоны перекрывались, используйте следующие данные

pol.3 = data.frame(x=c(4,8,0,0), y=c(0,0,5,4))
pol.2 = data.frame(x=c(3,4,0, 0), y=c(0,0,4,2))
pol.1 = data.frame(x=c(0,3,0), y=c(0,0,2))

Результат будет таким же, но без перекрытия, поэтому вы можете использовать alpha для настройки цвета заливки

...