2016-03-28 5 views
0

У меня возникла проблема с нанесением штабелированного планшета с помощью ggplot. Мои данные отображаются следующим образом:Маркировка geom_bar для расплавленных данных/штабелированный барплот

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 

Я хотел бы обратить многослойную barplot для каждого simID над TimeInterval, желающей и редколлегию должен быть уложены. Добиваюсь бар участок со следующим простым кодом:

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") 

я получаю следующий график: enter image description here

Вот моя проблема заключается в том, что я хотел бы поставить проценты на каждом стеке. Это означает, что я хочу указать процент для метки Willing: (Willing/(Willing + Accepted)) и для Accepted part ((Accepted/(Accepted + Willing)), чтобы я мог видеть, сколько процентов желает, сколько Принято, например, как 45 на красной части стека до 55 на синей части для каждого стека. Я, кажется, не достичь такой маркировки.

Любой намек ценится.

ответ

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) 

также, похоже, что некоторые из ваших переменных кодируются как факторы.

+0

Это не служит тому, что я хотел бы сделать, но я могу играть с ним, чтобы преобразовать то, что хочу. Большое спасибо за подсказку. @fanli – kukushkin

 Смежные вопросы

  • Нет связанных вопросов^_^