geom_tile не отображает карту

#r #plot #ggplot2 #maps

#r #график #ggplot2 #Карты

Вопрос:

У меня есть эти данные. Я пытаюсь построить карту фасетов, используя следующие коды. К сожалению, он не показывает график плиток, то есть не предоставляет карты. То, что нужно, находится здесь. Он показывает только легенду. Что не так? как это исправить? спасибо, используемый код является

 geomerror<-read.csv("Test_Geom_Tile.csv")
str(geomerror)
plot<- ggplot(geomerror,aes(x=Longitude,y=Latitude)) 
  geom_tile(aes(fill=Value),alpha=0.6) 
  facet_wrap(~Par) 
  scale_fill_gradientn(name="Test",     colours=rev(brewer.pal(11,rev("RdYlBu"))),breaks=seq(-10,15,by=5)) 
  coord_fixed()
plot
  

То, что я получил, находится здесь, это не показывает карту

Ответ №1:

Проблема, похоже, в том, что ваши данные для разных значений Par находятся в разных сетках. geom_tile Слой ожидает, что все наблюдения будут иметь одинаковые наборы значений x / y. В ваших данных это не так. Ваши значения для AA и CC совпадают, таким образом, вы можете построить

 ggplot(subset(geomerror,Par%in%c("AA", "CC")),aes(x=Longitude,y=Latitude)) 
  geom_tile(aes(fill=Value),alpha=0.6) 
  facet_wrap(~Par) 
  scale_fill_gradientn(name="Test", colours=rev(brewer.pal(11,rev("RdYlBu"))),breaks=seq(-10,15,by=5)) 
  coord_fixed()
  

то же самое относится к BB и DD

 ggplot(subset(geomerror,Par%in%c("BB", "DD")),aes(x=Longitude,y=Latitude)) 
  geom_tile(aes(fill=Value),alpha=0.6) 
  facet_wrap(~Par) 
  scale_fill_gradientn(name="Test", colours=rev(brewer.pal(11,rev("RdYlBu"))),breaks=seq(-10,15,by=5)) 
  coord_fixed()
  

Но если вы не сможете выровнять их по одной сетке, вы не сможете нанести их с помощью фасетов. Вы можете рассмотреть возможность использования grid.arrage из gridExtra пакета для компоновки 4 отдельных участков в одной конфигурации.