2015-12-21 52 views
2

我在每个网格上都有经度,纬度和值的数据。一个网格可能有多个值,所以我设置alpha以可视化多个值。我的目标是填充三个不同范围的网格。如果该值为零,那么该网格将是空的。在ggplot2中绘制经度纬度填充值的错误

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() 

The Image

是错误的。由于蓝色网格更大。我找不到这个错误。我跟着link,但无法完成。我猜想有一些微不足道的东西,我错过了。我的数据可以访问here。提前谢谢了。

+0

'geom_tile'并未真正发挥你想象到的方式。它会为'geom_tile'的每个调用计算一个新的网格。需要考虑这一点。 –

回答

2

对不起,不能按照您设想的方式进行。我看不到足够的灵活性。但是,一个能做到这一点:

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) 

其中产量如下:

enter image description here

+0

亲爱的迈克,谢谢你的宝贵意见。 – Pankaj

+0

也许这不是完美的,但你可以给我一个投票的努力。它没有任何成本。还有一些反馈意见... –

+0

对不起迈克,它真的帮了我,我忘了。它值得我投票。 – Pankaj