2014-12-11 3 views
0

EDITEDR: зерноуборочный круговые диаграммы с ggplot2

У меня есть следующий пример, где я создаю 3 круговые диаграммы, но я хотел бы, чтобы они 3 объединены в один пирог + пончики пирог. Кроме того, было бы действительно полезно иметь номера, как это можно сделать? Большое спасибо.

df.mut <- data.frame(Avrg.muts.HLA.A11.A24=c(20.20000,37.39286,11.85714,50.26087,20.20000,37.39286,11.85714,50.26087,20.20000,37.39286,11.85714,50.26087), Avrg.muts.HLA.A11=c(32.86842,32.86842,35.72973,35.72973,32.86842,32.86842,35.72973,35.72973,32.86842,32.86842,35.72973,35.72973), Avrg.muts.HLA.A24=c(15.33333,43.19608,15.33333,43.19608,15.33333,43.19608,15.33333,43.19608,15.33333,43.19608,15.33333,43.19608), variable=c("HLA.A11.A24","HLA.A11.A24","HLA.A11.A24","HLA.A11.A24","HLA.A11","HLA.A11","HLA.A11","HLA.A11","HLA.A24","HLA.A24","HLA.A24","HLA.A24"), value=c("+/+","+/-","-/+","-/-","+","+","-","-","+","-","+","-")) 
df.mut$variable <- factor(df.mut$variable, levels=unique(df.mut$variable)) 
png(file="IMAGES/test1.png") 
print(
    ggplot(df.mut, aes(x="")) + 
    facet_grid(variable~., scales="free_y") + 
    geom_bar(data=subset(df.mut, variable=='HLA.A11.A24'), 
     aes(x='0', y=Avrg.muts.HLA.A11.A24, fill=value), width = 1, stat = "identity") + 
    geom_bar(data=subset(df.mut, variable=='HLA.A11'), 
     aes(x='1', y=Avrg.muts.HLA.A11, fill=value), width = 1, stat = "identity") + 
    geom_bar(data=subset(df.mut, variable=='HLA.A24'), 
     aes(x='2', y=Avrg.muts.HLA.A24, fill=value), width = 1, stat = "identity") + 
    ggtitle("TEST1") + 
    theme(axis.text.x=element_blank(), legend.title=element_blank(), legend.position="right", legend.background=element_blank(), legend.box.just="left", plot.title=element_text(size=15, face="bold", colour="black", vjust=1.5)) + 
    scale_y_continuous(name="") + 
    scale_x_discrete(name="") + 
    coord_polar(theta="y") 
) 
dev.off() 

В результате получается следующее изображение: test

Однако, когда я пытаюсь имея 3 из них вместе, лучшее, что я получаю этот беспорядок: mess

Как совместить круговые диаграммы выше? И включают числа.

ответ

1

Это поможет вам начать:

df.test <- data.frame(genotype.1=c("+","+","-","-"), genotype.2=c("+","-","+","-"), count=c(345,547,678,987)) 
require(ggplot2) 
require(grid) 

ggplot(df.test, aes(y = count)) + 
    geom_bar(aes(x='0', fill = paste(genotype.1, genotype.2, sep="/")), color='black', width = 1, stat = "identity") + 
    geom_bar(aes(x='1', fill = genotype.1), width = 1, color='black', stat = "identity") + 
    geom_bar(aes(x='2', fill = genotype.2), width = 1, color='black', stat = "identity") + 
    coord_polar(theta="y") + 
    scale_x_discrete(name='', breaks=c('0', '1', '2'), labels=rep('', 3)) + 
    theme(axis.ticks.length = unit(0, "npc")) + 
    scale_fill_discrete(name='genotype', breaks = c('-', '+', '-/-', '-/+', '+/-', '+/+')) + 
    scale_y_continuous(breaks=0) 

enter image description here

EDIT: Одной из причин, вы получите что-то другое с огранкой, чем без, потому что вы используете scales="free_y". Чтобы получить то же самое без граней, вы можете сами масштабировать переменные.

p <- ggplot(df.mut, aes(x="")) + 
    geom_bar(data=subset(df.mut, variable=='HLA.A11.A24'), 
      aes(x='0', y=Avrg.muts.HLA.A11.A24/sum(Avrg.muts.HLA.A11.A24), fill=value), color='black', width = 1, stat = "identity") + 
    geom_bar(data=subset(df.mut, variable=='HLA.A11'), 
      aes(x='1', y=Avrg.muts.HLA.A11/sum(Avrg.muts.HLA.A11), fill=value), color='black', width = 1, stat = "identity") + 
    geom_bar(data=subset(df.mut, variable=='HLA.A24'), 
      aes(x='2', y=Avrg.muts.HLA.A24/sum(Avrg.muts.HLA.A24), fill=value), color='black', width = 1, stat = "identity") + 
    ggtitle("TEST1") + 
    theme(axis.text.x=element_blank(), legend.title=element_blank(), legend.position="right", legend.background=element_blank(), legend.box.just="left", plot.title=element_text(size=15, face="bold", colour="black", vjust=1.5)) + 
    scale_y_continuous(name="") + 
    scale_x_discrete(name="") + 
    coord_polar(theta="y") 
# now look at the faceted and unfaceted plots... 
p 
p + facet_grid(variable~., scales="free_y") 

Однако ваши граненые участки также не выстраиваются так же хорошо, как и предыдущие данные теста. Это похоже на то, что данные на самом деле не совсем выровнены (на HLA.A11 и HLA.A24 действительно есть только 2 уникальных значения, поэтому невозможно получить 4 разных размера).

+0

большое спасибо @shadow, это действительно полезно! однако, я, кажется, не оглядываюсь на фактические данные, которые у меня есть, я отредактировал вопрос, чтобы отразить его. надеюсь, вы можете помочь, спасибо! – DaniCee