Jestem zbliża się ten z funkcją wieloboku ggplot patrz the documentation
library(ggplot2)
data = rbind.data.frame(c(21.06941667, 71.07952778),
c(21.06666667, 71.08158333),
c(21.07186111, 71.08688889),
c(21.08625 , 71.07083333),
c(21.08719444, 71.07286111),
c(21.08580556, 71.07686111),
c(21.07894444, 71.08225))
names(data) = c("Latitude", "Longitude")
Twój rozbieżność jest niewielka, to pomnożyć przez 10, aby była ona widoczna na wykresie. Zauważ, że na wykresie w twoim pytaniu narysujesz obszar z płetw na listach błędów, co prawie na pewno nie jest tym, czego potrzebujesz.
var.latitude <- var(data$Latitude)*10
var.longitude <- var(data$Longitude)*10
Obliczenie tego obszaru jako jednego jest zadaniem ubocznym, jak również zaznaczono w komentarzach powyżej. Odkryłem, że najprostszym sposobem na to jest nakładanie się dwóch wielokątów dla każdej ścieżki oraz wielokąta dla każdego punktu. Na pewno mogą być bardziej eleganckie sposoby, ale hej, działa.
pos.poly = data.frame(id = paste0("c", as.character(1)),
x = c(data$Latitude[1]-var.latitude, data$Latitude[1], data$Latitude[1]+var.latitude, data$Latitude[1]),
y = c(data$Longitude[1], data$Longitude[1]+var.longitude, data$Longitude[1], data$Longitude[1]-var.longitude))
for(i in 2:dim(data)[1]){
loc.pos1 = data.frame(id = paste0("a", as.character(i)),
x = c(data$Latitude[i-1]-var.latitude, data$Latitude[i]-var.latitude,
data$Latitude[i]+var.latitude, data$Latitude[i-1]+var.latitude),
y = c(data$Longitude[i-1], data$Longitude[i], data$Longitude[i], data$Longitude[i-1]))
pos.poly = rbind(pos.poly, loc.pos1)
loc.pos2 = data.frame(id = paste0("b", as.character(i)),
x = c(data$Latitude[i-1], data$Latitude[i], data$Latitude[i], data$Latitude[i-1]),
y = c(data$Longitude[i-1]+var.longitude, data$Longitude[i]+var.longitude,
data$Longitude[i]-var.longitude, data$Longitude[i-1]-var.longitude))
pos.poly = rbind(pos.poly, loc.pos2)
loc.pos3 = data.frame(id = paste0("c", as.character(i)),
x = c(data$Latitude[i]-var.latitude, data$Latitude[i], data$Latitude[i]+var.latitude, data$Latitude[i]),
y = c(data$Longitude[i], data$Longitude[i]+var.longitude, data$Longitude[i], data$Longitude[i]-var.longitude))
pos.poly = rbind(pos.poly, loc.pos3)
}
ten wykreślono z dwóch zestawów danych tak musimy określić data
i aes
kilka razy.
plot1 = ggplot(pos.poly, aes(x=x, y=y)) + geom_polygon(aes(group=id), fill="white") + geom_path(data = data, aes(x=Latitude, y=Longitude))
plot1 = plot1 + xlab("Latitude") + ylab("Longitude") +
geom_errorbar(data = data, aes(x=Latitude,y=Longitude, ymin=Longitude-var.longitude, ymax=Longitude+var.longitude)) +
geom_errorbarh(data = data, aes(xmin=Latitude-var.latitude,xmax=Latitude+var.latitude, x=Latitude, y=Longitude))
print(plot1)

chcesz zrobić barwienia biały obszar? –
możesz * dodać * grubą białą ścieżkę 'geom_path (dane = dane, aes (x = szerokość geograficzna, y = długość geograficzna), rozmiar = 8, kolor =" biały ")' – tospig
@HemantRupani tak! To jest problem. – ayush