2017-05-28 4 views
0

Veuillez prendre en compte le code de fonction à la fin de la publication. Il génère un barchart où tout est comme je veux, à part quelques réglage mineur de la légende. Je peux contrôler l'espacement entre le texte dans les deux lignes de la légende , mais comment puis-je forcer une certaine séparation entre le rouge et les rectangles bleus dans la légende? Toute suggestion est la bienvenue.Barchart Lattice: contrôle de la séparation des éléments dans la légende

library(lattice) 
library(latticeExtra) 


df_tot<-structure(list(country = structure(c(13L, 1L, 3L, 21L, 12L,  6L, 
22L, 14L, 19L, 20L, 4L, 16L, 9L, 11L, 18L, 17L, 7L, 8L, 2L, 15L, 
10L, 5L, 13L, 1L, 23L, 21L, 12L, 6L, 22L, 14L, 19L, 20L, 4L, 
16L, 9L, 11L, 24L, 18L, 25L, 28L, 26L, 17L, 7L, 8L, 2L, 27L, 
15L, 10L), .Label = c("BE", "PT", "CZ", "EL", "TR", "EE", "NO", 
"PL", "IE", "SI", "IL", "DK", "AT", "FI", "SE", "HU", "NL", "IT", 
"FR", "UK", "DE", "ES", "CY", "IS", "LT", "MT", "RS", "LV"), class = 
"factor"), 
number = c(12L, 1L, 2L, 42L, 11L, 4L, 78L, 12L, 35L, 41L, 
    2L, 21L, 8L, 9L, 25L, 24L, 4L, 4L, 1L, 12L, 8L, 3L, 5L, 1L, 
     1L, 32L, 16L, 3L, 75L, 20L, 16L, 29L, 3L, 9L, 10L, 5L, 1L, 
      33L, 1L, 2L, 1L, 6L, 7L, 2L, 3L, 1L, 11L, 3L), year = 
      c(2015, 
       2015, 2015, 2015, 2015, 2015, 2015, 2015, 2015, 
       2015, 2015, 
        2015, 2015, 2015, 2015, 2015, 2015, 2015, 
        2015, 2015, 2015, 
         2015, 2016, 2016, 2016, 2016, 2016, 2016, 
         2016, 2016, 2016, 
          2016, 2016, 2016, 2016, 2016, 2016, 
          2016, 2016, 2016, 2016, 
           2016, 2016, 2016, 2016, 2016, 
           2016, 2016)), .Names = 
           c("country", 
           "number", "year"), row.names = 
           c(NA, -48L), class = "data.frame") 



p1 <- barchart(number ~ country , 
      groups= as.factor(year), 
         data = df_tot## , 
             , origin=0, spect="fill", 

     par.settings = c(ggplot2like(col=c("blue", "red"))), 
         axis = axis.grid, xlab=list("Number of 
         Beneficiaries", cex=1.2), 
         ylab=list("Country", cex=1.2), 
             main=list(NULL), 
         between = list(x = 1), 
          scales=list(cex=1), auto.key = 
         list(title = "Year", 
         columns=1,space="right",padding.text=3) 
             ) 
             pdf("beneficiaries_all2.pdf", 
         width=15, height=5) 
         print(p1) 
         dev.off() 

Répondre

1

Il suffit de définir height = <something less than 1>, comme ceci:

barchart(
    number ~ country , 
    groups = as.factor(year), 
    data = df_tot, 
    origin = 0, 
    aspect = "fill", 
    par.settings = c(ggplot2like(col = c("blue", "red"))), 
    axis = axis.grid, 
    xlab = list("Number of Beneficiaries", cex = 1.2), 
    ylab = list("Country", cex = 1.2), 
    main = list(NULL), 
    between = list(x = 1), 
    scales = list(cex = 1), 
    auto.key = list(
     title = "Year", 
     height = 0.8, 
     columns = 1, 
     space = "right", 
     padding.text = 3 
    ) 
) 

enter image description here

+1

Ce parfaitement répondu à ma question! J'ai d'autres réponses encombrantes ailleurs, mais c'est exactement ce dont j'ai besoin. – larry77

+0

@ larry77 Je suis content que ça a marché. Envisagez d'accepter la solution comme une réponse. –