2017-04-15 4 views
0

J'essaye de créer une fonction pour cartographier différentes variables pour les districts scolaires d'un état spécifique. Cependant, je rencontre des problèmes de formatage de la légende. En ce moment, je l'ai défini la meilleure façon d'ajuster les cartes (horizontalement), mais une partie du texte est coupée (Sous le taux de pauvreté moyen), et j'aimerais ajouter% aux étiquettes de numéros dans la légende . Mon code et une image de la légende sont ci-dessous. Toute aide que vous pourriez fournir serait très appréciée. Je vous remercie.R: tmap Légende Format

MakeLEAMap <-function(StateNum,NCHE_VAR,VAR1_NAME,In,Folder){ 
    as.character(substitute(StateNum)) 
    as.character(substitute(NCHE_VAR)) 
    as.character(substitute(NCHE_In)) 
    as.character(substitute(VAR1_NAME)) 
    as.character(substitute(Folder)) 

    map <- 
    tm_shape(LEA_1415_New[[email protected]$STATEFP == StateNum, ]) + 
    tm_polygons(NCHE_VAR,border.col="#000000", lwd= .5, textNA="Below Average \nPoverty Rate" , palette = 'Blues', style="quantile", 
       title=paste(In," State LEA Map: ",VAR1_NAME), 
       legend.is.portrait = FALSE) + 
    tm_text("LCITY", size=NCHE_VAR,scale=.8, root=2,print.tiny = FALSE, size.lowerbound = .85, bg.alpha = .75, 
      remove.overlap = TRUE,legend.size.show = FALSE, col="black") + 
    tm_layout(legend.title.size = 3, 
       frame = FALSE, inner.margins = c(0,.0,.05,.0), asp = 1.5, 
       legend.text.size = 1, 
       legend.outside=TRUE, legend.outside.position = 'bottom', 
       legend.frame = TRUE, 
       legend.outside.size = .3, legend.position = c(-0.1, 0.3)) 

    save_tmap(map, filename=paste("State_Maps_TEST/",Folder,"/",In,".pdf", sep = ''),width=8, height=8) 
} 
MakeLEAMap("48","Abv_Diff_Home_Pov","% Children in Poverty minus \n% Children HCY (Ages5-17)", 
      "TX","ALL") 

Here is what the legend looks like now

+0

Je pense que cela est pertinent: [Formatage des nombres dans les légendes] (https://github.com/mtennekes/tmap/issues/67) – Valentin

Répondre

0

Pour rendre le pourcentage Afficher la légende utilisent cette fonction dans votre tm_polygons appel:

legend.format = liste (fun = function (x) paste0 (FormatC (x, digits = 0, format = "f"), "%"))

Vous pouvez jouer avec les chiffres (décimales) et vous pouvez supprimer l'espace avant le signe% si vous sire.

Pour rendre la légende augmentation plus lisible l'espace autour de votre carte en faisant une plus grande bbox (éventuellement en utilisant la fonction extent de raster package pour lire bbox de votre objet spatial, puis l'élargir) et déplacer la légende en ajustant sa position.

C'est ce que je suis venu dans un contexte différent, mais qui a également appelé un signe de pourcentage tmap légende. enter image description here