Christophe Bouffioux
2011-Jan-26 12:56 UTC
[R] barchart panel.text add label value and percent
Hello everybody,
i need some help to display text as label in my barchart
the label is the combination of x value + text
text= calculated percentage => per
it display properly the x value
but, wrongly repeats the text of the fisrt level LangueTXT factor on the
second
any solution?
Thanx very much
Christophe
######## here is the code ##########
library(lattice)
Langue <- c(1, 1, 1, 2, 2, 2, 2)
n03interessantscore <- c(1, 2, 3, 1, 2, 3, 4)
count <- c(89, 148, 16, 88, 192, 28, 7)
sumcount <- c(253, 253, 253, 315, 315, 315, 315)
per <-
c('35.2%','58.5%','6.3%','27.9%','61%','8.9%','2.2%')
LangueTXT <-
c('Nl','Nl','Nl','Fr','Fr','Fr','Fr')
databar <- data.frame(Langue, n03interessantscore, count, sumcount, per,
LangueTXT)
barchart(n03interessantscore ~ count| LangueTXT, data=databar,
layout=c(1,max(databar$Langue)), stack=TRUE, rectangles=TRUE,
horizontal=TRUE,
ylab="Score",
xlab="Count",
col="grey",
main="3.0z Trouvez-vous ce rapport intéressant?",
border="NA",
panel= function(y,x,...){panel.grid(h=0, v=-1, col="gray")
Y <- tapply(y, y, unique)
panel.barchart(x,y,...)
panel.text((x-0.1*x), Y, label= paste(round(x,0),'-',
databar$per), cex=0.9)}
)
[[alternative HTML version deleted]]
On 2011-01-26 04:56, Christophe Bouffioux wrote:> Hello everybody, > > i need some help to display text as label in my barchart > the label is the combination of x value + text > text= calculated percentage => per > it display properly the x value > but, wrongly repeats the text of the fisrt level LangueTXT factor on the > second > > any solution? > Thanx very much > Christophe > > > ######## here is the code ########## > library(lattice) > Langue<- c(1, 1, 1, 2, 2, 2, 2) > n03interessantscore<- c(1, 2, 3, 1, 2, 3, 4) > count<- c(89, 148, 16, 88, 192, 28, 7) > sumcount<- c(253, 253, 253, 315, 315, 315, 315) > per<- c('35.2%','58.5%','6.3%','27.9%','61%','8.9%','2.2%') > LangueTXT<- c('Nl','Nl','Nl','Fr','Fr','Fr','Fr') > > > databar<- data.frame(Langue, n03interessantscore, count, sumcount, per, > LangueTXT) > > barchart(n03interessantscore ~ count| LangueTXT, data=databar, > layout=c(1,max(databar$Langue)), stack=TRUE, rectangles=TRUE, > horizontal=TRUE, > ylab="Score", > xlab="Count", > col="grey", > main="3.0z Trouvez-vous ce rapport int?ressant?", > border="NA", > panel= function(y,x,...){panel.grid(h=0, v=-1, col="gray") > Y<- tapply(y, y, unique) > panel.barchart(x,y,...) > panel.text((x-0.1*x), Y, label= paste(round(x,0),'-', > databar$per), cex=0.9)} > ) >I haven't seen an answer to this yet. You need subscripts; replace panel= function(y,x,...){ with panel = function(x, y, subscripts, ...){ and databar$per with databar$per[subscripts] Peter Ehlers