Avec spplot, je ne parviens pas à représenter sur le fond de carte la couleur définie pour chaque département dans le data-frame (fréquence de survenue d’un événement dans chacun d’entre eux). Et cela, bien que la colonne fr1@data$cols correspond bien avec le couleur que je souhaite affecter au département !!! Les couleurs sur la carte sont bien celles définies mais réparties d'une façon qui me rend perplexe.
Merci de votre aide.
Code : Tout sélectionner
#-------------------------------------------------------
#carto.r : Nombre de transactions par département
#--------------------------------------------------------
rm(list=ls())
load('../data/total.rdata')
#carto
library(maps)
library(mapdata)
library(maptools)
library(rgdal)
library(cartography)
graphics.off()
png('../figs/lieu_transac.jpg',width=1500,height=1000)
#donnees INSEE
depts<-read.table('../data/insee/depts2010.txt',sep="\t",header=T,quote=NULL,stringsAsFactor=F)
#chargement du fond de carte
#par dept
fr1<-readOGR('../data/departements-20180101-shp/departements-20180101.shp')#fr2=readShapePoly("C:/Users/Robert et Chantal/Documents/boulot/wyeth/cartes/FRA_adm/FRA_adm2.shp",proj4string=CRS("+proj=longlat +datum=WGS84"))
fr1@data$wikipedia=NULL
fr1<-subset(fr1,!{fr1@data$code_insee %in% c(971:976,'69D','69M','2A','2B')})
# & fr1@data$code_insee %in% c('06',83,13)
levels(total$lieu_transac2)[which(levels(total$lieu_transac2)=='Nice')]='06'
levels(total$lieu_transac2)[which(! levels(total$lieu_transac2) %in% c(as.character(fr1@data$code_insee),'69','20'))]='99'
fr1@data<-merge(fr1@data,data.frame(table(as.character(droplevels(total$lieu_transac2)))),by.x='code_insee',by.y='Var1',all.x=T
)
fr1@data$Freq[which(is.na(fr1@data$Freq))]=0
#fr1@data<-lapply(fr1@data,droplevels)
fr1@data$freq2<-cut(fr1@data$Freq,breaks=c(-0.1,1,10,20,50,100,100000000),right=F,
#labels=c(paste('[',paste(c(1,10,20),1:3*10,sep='-'),'[',sep=''),'[31 et+]'))
labels=c('0','1 à 9','10 à 19','20 à 49','50 à 99','100 et +'))
#
#fr1@data[,c('code_insee','Freq','freq2','cols')]
#graphiques
palette=rev(heat.colors(100))
fr1@data$cols<-ifelse(fr1@data$freq2=='0',palette[1],ifelse(fr1@data$freq2=='1 à 9',palette[5],ifelse(fr1@data$freq2=='10 à 19',palette[15],
ifelse(fr1@data$freq2=='20 à 49',palette[35],ifelse(fr1@data$freq2=='50 à 99',palette[75],'blue')))#palette[100]
))
par(xpd=T,mar=rep(0.5,4))
plot.new()
print(spplot(obj=fr1,zcol='freq2',col.regions=rev(fr1@data$cols),main='',colorkey = FALSE))
title('Nombre de transactions')
#legend(x=0.86,y=1,cex=2.5,box.lwd=2,fill=palette[c(5,8,11,14,16)],legend=c('1 à 9','10 à 19','20 à 49','50 à 99','100 et +'),bty="n")
dev.off()
stop('lola')