我到处找了找,但找不到答案。我想做一个加权几何图形,上面有一条垂直线,显示每个面的总体加权平均值。我无法让这一切发生。垂直线似乎是应用于所有面的单个值
需要('ggplot2')
要求('plyr')
#数据向量
面板<;-c(“A”,“A”,“A”,“A”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”,“B”)
仪器<-c(“V1”、“V2”、“V1”、“V1”、“V1”、“V2”、“V1”、“V1”、“V1”、“V1”、“V2”、“V1”、“V1”、“V1”、“V1”、“V2”、“V1”、“V1”、“V2”、“V1”)
成本<;-c(1,4,1.5,1,4,4,1,2,1.5,1,2,1.5,2,1.5,1,2)
灵敏度<;-c(3,5,2,5,5,1,1,2,3,4,3,2,1,3,1,2)
#将初始数据帧放在一起
mydata<;-数据框(面板、仪表、成本、灵敏度)
#将“贡献”向量添加到数据框:每个仪器的贡献
#根据专家组的加权平均灵敏度。
myfunc<;-功能(成本、敏感性){
回报(成本*敏感度/总额(成本))
}
mydata<;-ddply(mydata,.(面板),转换,contrib=myfunc(成本,灵敏度))
#每个面板的两个视图加权平均;应该是相同的数字
ddply(我的数据,c(“面板”),汇总,wavg=加权平均值(敏感性,成本))
ddply(我的数据,c(“面板”),汇总,wavg2=总和(contrib))
#绘制每个面板获得其总体成本加权敏感度的位置。而且
#将每个面板的加权平均值作为一条简单的垂直线放在绘图上。
#
#问题!我不知道如何让geom_vline来纪念小平面破裂。信息技术
#似乎在计算数据并显示结果
#在每个刻面图中的值相同。
ggplot(mydata,aes(x=灵敏度,权重=contrib))+
几何钢筋(binwidth=1)+
几何线(xintercept=总和(contrib))+
面_包裹(~面板)+
ylab(“contrib”)
如果您传入预设的数据,它似乎可以工作:
ggplot(mydata,aes(x=灵敏度,权重=contrib))+
几何钢筋(binwidth=1)+
geom_vline(数据=ddply(我的数据,“面板”,汇总,wavg=sum(contrib)),aes(xintercept=wavg))+
面_包裹(~面板)+
ylab(“contrib”)+
主题_bw()