R网格条形图:如何在多个面板中的每个条形图上写入总和?

Eva*_*Eva 2 label r bar-chart lattice

我有一个带有多个面板的格子条形图,我想在条形图的顶部添加每个条形图的总和(例如(70),(20)在左上角的第一个条形图的顶部,第二个条形图的顶部,(150)第三个条形图等) .

BARCHART

这里有一个类似的问题,但我找不到一种方法来调整我的情节代码.与那个例子不同,我想做的是在每个条形垂直条的顶部添加男性和女性的"总和".我也无法使用此处ltext所示单独标记它们.任何建议,使用或任何其他方式,将是非常有帮助的.ltext

civ1<-c("Single","Single","Marr","Marr","Single","Single","Marr","Marr","Single","Single","Marr","Marr","Single","Single","Marr","Marr")
Sex<-rep(c("women","men"),8)
Year<-rep(c(rep(1990,4),rep(2000,4)),2)
Type1<-c(rep("Traditional",8),rep("Dual-earner",8))
Earn1<-c(seq(10, 160, by = 10))
df<-as.data.frame(cbind(civ1,Sex,Year,Type1,Earn1))
df$Earn1<-as.numeric(levels(df$Earn1))[df$Earn1]

my.key<-list(space="bottom",text=list(c("Women","Men"),col=c("black","black")), columns=2,points=T,pch=15,col=c("darkgray","lightgray"),cex=0.8)
labels=c("70","20","150","110")


print(figure1<-barchart(Earn1~civ1|Year+Type1,df,groups=Sex, ylim=c(0,350),horizontal=F,col=c("darkgray","lightgray"),cex=0.8,ylab="Earnings",stack=T,layout=c(2,2),key=my.key,
par.settings = list(strip.background=list(col=c("white","lightyellow")),
panel=function(x,y,subscripts...){
    panel.grid(h=-1,v=0) 
    panel.barchart(...)
    ltext(1,200, labels[subscripts]) #not working!
    })))
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

我看到几个问题.首先,您的panel=参数在参数内部par.settings是不正确的.它应该直接传递给它barchart.然后你有一些缺少逗号的语法问题,我不确定你的标签是如何只使用4个值的.无论如何,以下代码应该工作.

barchart(
    Earn1~civ1|Year+Type1,df,
    groups=Sex,
    ylim=c(0,350), cex=0.8, ylab="Earnings",
    horizontal=F, stack=T, layout=c(2,2),
    col=c("darkgray","lightgray"),
    key=my.key,
    par.settings = list(strip.background=list(col=c("white","lightyellow"))),
    panel=function(x,y,subscripts,...){
        panel.grid(h=-1,v=0) 
        panel.barchart(x,y,subscripts=subscripts,...)
        t <- aggregate(y~x, data.frame(x,y), FUN=sum)
        panel.text(t$x,t$y, labels=t$y, pos=3)
    }
)
Run Code Online (Sandbox Code Playgroud)

除了解决上述问题之外,我还aggregate()用来计算每列的总数,并使用这些值在适当的位置绘制文本标签.结果图如下

结果情节