R 使用ggplot2中的填充值打印经纬度时出错

R 使用ggplot2中的填充值打印经纬度时出错,r,plot,ggplot2,raster,spatial-data-frame,R,Plot,Ggplot2,Raster,Spatial Data Frame,我在每个网格上都有一个包含经度、纬度和值的数据。一个网格可能有多个值,因此我将alpha设置为可视化多个值。我的目标是用三个不同的范围填充网格。如果该值为零,则该网格将为空 library(maps) library(ggplot2) data <- read.csv("G:/mydata.csv") g1 <- ggplot(aes(x=x, y=y, fill= A), data=data) + geom_tile(data=subset(data, A > 1970

我在每个网格上都有一个包含经度、纬度和值的数据。一个网格可能有多个值,因此我将
alpha
设置为可视化多个值。我的目标是用三个不同的范围填充网格。如果该值为零,则该网格将为空

library(maps)
library(ggplot2)
data <- read.csv("G:/mydata.csv")
g1 <- ggplot(aes(x=x, y=y, fill= A), data=data) +
  geom_tile(data=subset(data, A > 1970 &  A < 1980),fill = "black", alpha = 0.5)+
  geom_tile(data=subset(data, B > 1970 & B < 1980),fill = "black", alpha = 0.5)+
  geom_tile(data=subset(data, C > 1970 & C < 1980),fill = "black", alpha = 0.5)+
  geom_tile(data=subset(data, A > 1979 & A < 1990),fill = "blue", alpha = 0.5)+
  geom_tile(data=subset(data, B> 1979 & B < 1990), fill = "blue", alpha = 0.5)+
  geom_tile(data=subset(data, C > 1979 & C < 1990),fill = "blue", alpha = 0.5)+
  geom_tile(data=subset(data, A > 1989),fill = "red", alpha = 0.5)+
  geom_tile(data=subset(data, B > 1989),fill = "red", alpha = 0.5)+
  geom_tile(data=subset(data, C > 1989),fill = "red", alpha = 0.5)+
  theme_classic()
库(地图)
图书馆(GG2)
数据1970&B<1980),填充=“黑色”,α=0.5)+
geom_tile(数据=子集(数据,C>1970和C<1980),fill=“black”,alpha=0.5)+
geom_tile(数据=子集(数据,A>1979和A<1990),fill=“blue”,alpha=0.5)+
geom_tile(数据=子集(数据,B>1979和B<1990),fill=“blue”,alpha=0.5)+
geom_tile(数据=子集(数据,C>1979&C<1990),fill=“blue”,alpha=0.5)+
geom_tile(数据=子集(数据,A>1989),fill=“red”,alpha=0.5)+
geom_tile(数据=子集(数据,B>1989),fill=“red”,alpha=0.5)+
geom_tile(数据=子集(数据,C>1989),fill=“red”,alpha=0.5)+
主题(经典)


这是错误的。因为蓝色的网格更大。我找不出错误。我跟着火车走,但没能赶上。我想我遗漏了一些琐碎的东西。我的数据可以访问。非常感谢。

对不起,不能按照您的设想来做。不够灵活,我看不出来。但我们可以做到这一点:

library(maps)
library(ggplot2)

ddf <- read.csv("mydata.csv")

setz <- function(dddf,zvek,lev=0,fillclr){
  dddf$z <- as.numeric(zvek)
  dddf$lev <- lev
  dddf$color <- "white"
  dddf$fill <- ifelse(zvek,fillclr,"gray")
  return(dddf)
}
df1<-setz(ddf,ddf$A>1970 & ddf$A<1980,"A>1970 & A<1980","black")
df2<-setz(ddf,ddf$B>1970 & ddf$B<1980,"B>1970 & B<1980","black")
df3<-setz(ddf,ddf$C>1970 & ddf$C<1980,"C>1970 & C<1980","black")

df4<-setz(ddf,ddf$A>1979 & ddf$A<1990,"A>1979 & A<1990","blue")
df5<-setz(ddf,ddf$B>1979 & ddf$B<1990,"B>1979 & B<1990","blue")
df6<-setz(ddf,ddf$C>1979 & ddf$C<1990,"C>1979 & C<1990","blue")

df7<-setz(ddf,ddf$A>1989,"A>1989","red")
df8<-setz(ddf,ddf$B>1989,"B>1989","red")
df9<-setz(ddf,ddf$C>1989,"C>1989","red")

ddg <- rbind( df1,df2,df3, df4,df5,df6, df7,df8,df9 )

g1 <- ggplot(data=ddg,aes(x=x, y=y,fill=fill,color=color)) +
  geom_tile() +
  scale_color_identity() +
  scale_fill_identity() +
  facet_wrap(~lev)
  theme_classic()
print(g1)
库(地图)
图书馆(GG2)

ddf
geom_tile
并不是你想象的那样。它为每次调用
geom\u tile
计算一个新网格。我需要考虑一下。也许这并不完美,但你可以给我投票支持这项努力。它不花钱。还有一些反馈……对不起,迈克,这真的很有帮助,我忘了。这是值得的,我投了赞成票。亲爱的迈克,我还在努力。我会尽快发帖。