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

Смежные вопросы