Erreur de cartographie avec R

Bonjour je souhaite représenter des indicateurs sur 2 régions d'un pays qui en compte 13,

j'ai utilisé le code suivant :

BfForm <- raster::getData(name="GADM", country="BF", level=1)
raster::plot(BfForm, col="lightgrey", main="Fond de carte du BF")
idx<-match(BfForm$NAME_1, Carto$region)
cor <- Carto[idx, "region"]
BfForm$region <- cor
couleurs <- colorRampPalette(c('white','red'))
raster::spplot(BfForm, "region", col.regions=couleurs(30), main=list(label="effectif de la pop enquêtée", cex=.8), at=seq(5000,6500,200))

Mais j'ai le message d'avertissement suivant:

Warning messages:
1: In extend.limits(range(as.numeric(z), finite = TRUE)) :
NAs introduced by coercion
2: In min(x) : no non-missing arguments to min; returning Inf
3: In max(x) : no non-missing arguments to max; returning -Inf
4: In (function (x, y, z, subscripts, at = pretty(z), shrink, labels = NULL, :
NAs introduced by coercion

Quelqu'un pourrai t'il m'apporter un coup de main. cordialement

C'est "Avertissement" pas "Erreur".

You may have a problem but you may not have a problem.

I think we need to see your code and some sample data. See
FAQ Asking Questions

A handy way to supply some sample data is the dput() function. In the case of a large dataset something like dput(head(mydata, 100)) should supply the data we need. Just do dput(mydata) where mydata is your data. Copy the output and paste it here between
```

```

Un exemple de mes données:

structure(list(ville = structure(1:2, levels = c("Bobo-Dioulasso",
"Ouagadougou"), label = "Ville de l'enquête", class = "factor"),
lat = c(11.1848143629427, 12.3742377311066), long = c(-4.28659431353817,
-1.53454603158683), Effectif = c(6419L, 5969L), pays = c("Burkina Faso",
"Burkina Faso"), province = c("Houet", "Kadiogo"), region = c("Haut-Bassins",
"Centre")), row.names = c(NA, -2L), class = c("tbl_df", "tbl",
"data.frame"))

Merci, mais nous avons besoin de plus de votre code. Par exemple, qu'est que c'est les "libraries" que vous utilisez? Est-ce que vous pouvez nous donner tout le code?

Encore mettez le code entre les
```

```

Les library utilisées:

library(haven)
library(tidyverse)
library(labelled)
library(questionr)
library(raster)

#Importation des coordonnées géographiques
BfForm <- raster::getData(name="GADM", country="BF", level=1)
raster::plot(BfForm, col="lightgrey", main="Fond de carte du BF")
#Jointure entre les deux bases de données
idx<-match(BfForm$NAME_1, Carto$region)
cor <- Carto[idx, "region"]
BfForm$region <- cor
couleurs <- colorRampPalette(c('white','red'))
#Rprésentation graphique
raster::spplot(BfForm, "region", col.regions=couleurs(30), main=list(label="effectif de la pop enquêtée", cex=.8), at=seq(5000,6500,200))

A cette linge

 idx<-match(BfForm$NAME_1, Carto$region)

j'ai reçu l'erreur

Error: object 'Carto' not found

Où et qu'est-ce que "Carto"?

Carto est la structure de données que je vous ai partagé:
view(Carto)

ville            lat  long Effectif pays         province region      
  <fct>          <dbl> <dbl>    <int> <chr>        <chr>    <chr>       
1 Bobo-Dioulasso  11.2 -4.29     6419 Burkina Faso Houet    Haut-Bassins
2 Ouagadougou     12.4 -1.53     5969 Burkina Faso Kadiogo  Centre  

Okay, ici est un reprex de votre code. Cela nous donne une idée de ce qui se passe.

Je ne connais pas le "package" {raster} mais est-il possible que vous souhaitiez uniquement les deux régions "Hauts-Bassins" et "Centre" et non la carte entière du pays ?

D'où vient également le '30' dans "col.regions=couleurs(30) ?

library(haven)
library(tidyverse)
library(labelled)
library(questionr)
library(raster)
#> Loading required package: sp
#> The legacy packages maptools, rgdal, and rgeos, underpinning the sp package,
#> which was just loaded, were retired in October 2023.
#> Please refer to R-spatial evolution reports for details, especially
#> https://r-spatial.org/r/2023/05/15/evolution4.html.
#> It may be desirable to make the sf package available;
#> package maintainers should consider adding sf to Suggests:.
#> 
#> Attaching package: 'raster'
#> The following object is masked from 'package:dplyr':
#> 
#>     select

Carto  <- structure(list(ville = structure(1:2, levels = c("Bobo-Dioulasso",
       "Ouagadougou"), label = "Ville de l'enquête", class = "factor"),
       lat = c(11.1848143629427, 12.3742377311066), long = c(-4.28659431353817,
       -1.53454603158683), Effectif = c(6419L, 5969L), pays = c("Burkina Faso",
        "Burkina Faso"), province = c("Houet", "Kadiogo"), region = c("Haut-Bassins",
       "Centre")), row.names = c(NA, -2L), class = c("tbl_df", "tbl", "data.frame"))

BfForm <- raster::getData(name="GADM", country="BF", level=1) # ça marche
#> Warning in raster::getData(name = "GADM", country = "BF", level = 1): getData will be removed in a future version of raster
#> . Please use the geodata package instead
raster::plot(BfForm, col="lightgrey", main="Fond de carte du BF") # ça marche

idx<-match(BfForm$NAME_1, Carto$region) # ça ne marche pas
cor <- Carto[idx, "region"] # ça marche
BfForm$region <- cor # ça marche
couleurs <- colorRampPalette(c('white','red')) # ça marche
#Rprésentation graphique
raster::spplot(BfForm, "region", col.regions=couleurs(30), 
               main=list(label="effectif de la pop enquêtée", cex=.8), at=seq(5000,6500,200))
#> Warning in extend.limits(range(as.numeric(z), finite = TRUE)): NAs introduced
#> by coercion
#> Warning in min(x): no non-missing arguments to min; returning Inf
#> Warning in max(x): no non-missing arguments to max; returning -Inf
#> Warning in (function (x, y, z, subscripts, at = pretty(z), shrink, labels =
#> NULL, : NAs introduced by coercion

Created on 2023-10-24 with reprex v2.0.2

J'y suis parvenu, je vous partage la syntaxe.

Seulement je souhaite afficher les labels des régions sur la carte

library(haven)
library(tidyverse)
library(labelled)
library(questionr)
library(raster)

BfForm <- raster::getData(name="GADM", country="BF", level=1)
raster::plot(BfForm, col="lightgrey", main="Fond de carte du BF")

#Jointure des bases BfForm et Carto
idx<-match(BfForm$NAME_1, Carto$region)
cor <- Carto[idx, "Effectif"] %>% rename(region=Effectif)
BfForm$region <- cor
couleurs <- colorRampPalette(c('white','blue')) #Défintion des couleurs
#Affichage de la carte
raster::spplot(BfForm, "region", col.regions=couleurs(50), main=list(label="Population enquêtée", cex=.8), at=seq(4000,7000,1000))

Merci.

Je vois que vous avez modifié "col.regions" et "at=sea()".
Est-ce que vous avez dû changer les deux ?

Non pas du tout,
il me fallait ajuster l'échelle de la représentation graphique.
Je souhaite afficher le nom des régions sur le graphique. Pourrais je avoir un coup de main?

Je ne parle pas bien le français, mais je essayerai d'écrire en français — pouvez-vous écrire en anglais?

Pour reçoir la plus(?) aide possible, ma première suggestion est de changer le titre de votre question à:

How to add text to a raster::ssplot object?

Je croix qu'il faudra utiliser quelques "libraries" additionnelles mais j'en suis pas sûre.

Une bonne idée mais peut-être une nouvelle question?

Vous avez, déjà une charte. Une nouvelle question avec un "reprex" serait la meilleure approche.

1 Like

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.