2016-03-28 17 views
0

Ggplot ile yığılmış arplot çizimi ile ilgili bir sorunum var. Benim veriler aşağıdaki gibi görünür:geom_bar eritilmiş veri/yığınlanmış etiket için etiketleme

timeInterval TotalWilling TotalAccepted SimID 
1   16   12   Sim1 
1   23   23   Sim2 
1   63   60   Sim3 
1   69   60   Sim4 
1   61   60   Sim5 
1   60   54   Sim6 
2   16    8   Sim1 
2   23   21   Sim2 
2   63   52   Sim3 
2   69   64   Sim4 
2   61   45   Sim5 
2   60   32   Sim6 
3   16   14   Sim1 
3   23   11   Sim2 
3   63   59   Sim3 
3   69   69   Sim4 
3   61   28   Sim5 
3   60   36   Sim6 

ben her bir Timeınterval üzerinde SIMID ve istekli ve Kabul için yığılmış barplot çekmek istiyorum yığılmış edilmelidir. Aşağıdaki basit kod ile çubuk işaretler elde:

dat <- read.csv("myDat.csv") 
meltedDat <- melt(dat,id.vars = c("SimID", "timeInterval")) 
ggplot(meltedDat, aes(timeInterval, value, fill = variable)) + facet_wrap(~ SimID) + 
geom_bar(stat="identity", position = "stack") 

Ben şu grafiği olsun: enter image description here İşte

benim sorunum ben her yığın yüzdelerini koymak istiyorum olmasıdır. Yani, yüzde kaçının istekli olduğunu görmek için, Willing etiketine: (Vasiyet/İstekli + Kabul)) ve Kabul edilen kısım için, ((Kabul Edildi/Kabul Edildi)) oranını belirtmek istiyorum. I etiketleme bu tür elde etmek gibi olamaz her yığını için mavi parçası 55 yığının kırmızı parçası gibi 45 kabul edilir..

herhangi bir ipucu takdir edilmektedir.

cevap

0

Showing data values on stacked bar chart in ggplot2

meltedDat <- melt(dat,id.vars = c("SimID", "timeInterval")) 
meltedDat$normvalue <- meltedDat$value 
meltedDat$valuestr <- sprintf("%.2f%%", meltedDat$value, meltedDat$normvalue*100) 
meltedDat <- ddply(meltedDat, .(timeInterval, SimID), transform, pos = cumsum(normvalue) - (0.5 * normvalue)) 
ggplot(meltedDat, aes(timeInterval, value, fill = variable)) + facet_wrap(~ SimID) + geom_bar(stat="identity", position = "stack") + geom_text(aes(x=timeInterval, y=pos, label=valuestr), size=2) 
uygulanan

ayrıca, bazı değişkenlerinizin kodlanmış olarak göründüğüne benzer.

+0

Bu, yapmak istediklerimi yerine getirmiyor, ancak istediğim gibi değişmek için onunla oynayabiliyorum. İpucu için çok teşekkürler. @fanli – kukushkin