2015-12-21 42 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