2013-10-15 4 views
5

Это игрушка набор данных:Заполните область между двумя линиями с ggplot2 в R

xa <- c(4, 5, 4.5, 4, 3, 1.5) 
ya <- c(1, 2, 4, 5, 5.5, 6) 
xb <- c(3.8, 4.5, 4, 3.5, 2.5, 1) 
yb <- c(1, 2, 3, 4, 5, 5.8) 
toyset <- as.data.frame(cbind(xa, ya, xb, yb)) 

Если мы просто построить точки и линии, соединяющие их, мы получим:

library(ggplot2) 
ggplot(toyset) + geom_path(aes(xa, ya)) + geom_path(aes(xb, yb)) + 
    geom_point(aes(xa, ya)) + geom_point(aes(xb, yb)) 

enter image description here

Есть ли простой способ в ggplot2, чтобы заполнить область, определенную двумя строками?

ответ

5

Вы можете использовать geom_polygon:

poly_df <- rbind(setNames(toyset[,1:2],c('x','y')), 
       setNames(toyset[6:1,3:4],c('x','y'))) 

ggplot(toyset) + 
    geom_path(aes(xa, ya)) + 
    geom_path(aes(xb, yb)) + 
    geom_point(aes(xa, ya)) + 
    geom_point(aes(xb, yb)) + 
    geom_polygon(data = poly_df,aes(x = x,y = y),fill = "lightblue",alpha = 0.25) 

Я исправил опечатку в данных выборки (54). Обратите внимание, что вы должны быть очень осторожны в упорядочении точек в кадре данных для многоугольника. Это та же самая сделка, что и с geom_path.

Смежные вопросы