Question

Je souhaite placer la valeur de chaque barre en barchart (treillis) en haut de chaque barre. Cependant, je ne peux pas trouver une option avec laquelle je peux y parvenir. Je ne peux trouver des options pour l'axe.

Était-ce utile?

La solution

Créer une fonction de panneau de commande, par exemple.

library("lattice")
p <- barchart((1:10)^2~1:10, horiz=FALSE, ylim=c(0,120),
              panel=function(...) { 
                args <- list(...)
                panel.text(args$x, args$y, args$y, pos=3, offset=1)
                panel.barchart(...)
              })
print(p)

barchart en treillis avec des étiquettes

Autres conseils

J'aurais suggéré d'utiliser le nouveau package directlabels , qui peut être utilisé avec les deux treillis et ggplot (et rend la vie très facile pour ces problèmes d'étiquetage), mais malheureusement, il ne fonctionne pas avec BarCharts.

Depuis que je devais le faire de toute façon, voici un exemple de code gros assez à la figure dehors le long des lignes de ce que Brown suggère (@ Alex scores est un tableau 2D de quelque sorte, which'll se transformer en un vecteur groupé):

barchart(scores, horizontal=FALSE, stack=FALSE, 
     xlab='Sample', ylab='Mean Score (max of 9)',
     auto.key=list(rectangles=TRUE, points=FALSE),
     panel=function(x, y, box.ratio, groups, errbars, ...) {
         # We need to specify groups because it's not actually the 4th 
         # parameter
         panel.barchart(x, y, box.ratio, groups=groups, ...)
         x <- as.numeric(x)
         nvals <- nlevels(groups)
         groups <- as.numeric(groups)
         box.width <- box.ratio / (1 + box.ratio)
         for(i in unique(x)) {
             ok <- x == i
             width <- box.width / nvals
             locs <- i + width * (groups[ok] - (nvals + 1)/2)
             panel.arrows(locs, y[ok] + 0.5, scores.ses[,i], ...)
         }
     } )

Je ne l'ai pas testé, mais les bits importants (les parties déterminent les locs etc. dans la fonction du panneau) fonctionnent. C'est la partie la plus difficile à comprendre. Dans mon cas, je fait en utilisant panel.arrows pour faire errorbars (l'horreur!). Mais scores.ses est censé être un tableau de la même dimension que les scores.

Je vais essayer de nettoyer ce plus tard - mais si quelqu'un d'autre veut, je suis heureux pour elle

Si vous utilisez le paramètre groups vous trouverez les étiquettes dans le code de @ rcs tout terrain au-dessus de l'autre. Cela peut être résolu en étendant panel.text travailler comme panel.barchart, ce qui est assez facile si vous connaissez R.

Je ne peux pas poster le code du correctif ici pour des raisons de licence, désolé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top