2012-07-17 1 views
5

Ho creato 2 grafici a bolle chiamati beta e km. Vorrei confrontare i grafici fianco a fianco ma la scala_area sembra essere diversa, il che rende difficile confrontare visivamente 2 grafici in base alla dimensione delle bolle.ggplot2: come regolare manualmente scale_area

Se si notano le leggende nelle aree sottostanti, le scale sono diverse. Penso che sia perché il valore BiasAM più alto sul set di dati betaGSD5 ~ 64 e kmGSD5 dati = 100.

Come posso modificare manualmente la scala_area in modo che la scala di betaPlot corrisponda alla scala di kmPlot?

Inoltre è possibile impostare manualmente le interruzioni di legenda? Invece di essere generato automaticamente, posso specificare io la legenda, ma voglio così? 0-10, 10-30 , 30-50, 50-70 , 70-100,

betaGSD5 dati: https://dl.dropbox.com/u/63947093/betaGSD5.csv

dati kmGSD5: https://dl.dropbox.com/u/63947093/kmGSD5.csv

Ecco il codice di trama beta

betaPlot <- ggplot(betaGSD5, aes(N,PctCens,size=BiasAM,label=NULL)) + 
    geom_point(colour="red", shape=16) +scale_area(to=c(1,10)) + 
    xlab("Sample size") + ylab("Percent censored") + 
    xlim(0,100)+ ylim(0,100) + 
    theme_bw()+ 
    opts(
#legend.position='none', 
    panel.grid.minor = theme_blank(), 
    panel.background = theme_blank(), 
    axis.ticks = theme_blank(), 
    axis.title.x=theme_text(face='bold',vjust=0.2, size =12), #size=15 #hjust:move  horizonal, vjust-move verticall 
    axis.title.y=theme_text(face='bold',angle=90, vjust=0.2,size =12)) 
print(betaPlot) 

enter image description here

trama KM

kmPlot <- ggplot(kmGSD5, aes(N,PctCens,size=NewBiasAMpct,label=NULL)) + 
    geom_point(colour="red", shape=16) +scale_area(to=c(1,10)) + 
    xlab("Sample size") + ylab("Percent censored") + 
    xlim(0,100)+ ylim(0,100) + 
    theme_bw()+ 
    opts(
     #legend.position='none', 
    panel.grid.minor = theme_blank(), 
    panel.background = theme_blank(), 
    axis.ticks = theme_blank(), 
    axis.title.x=theme_text(face='bold',vjust=0.2, size =12), #size=15 #hjust:move  horizonal, vjust-move verticall 
    axis.title.y=theme_text(face='bold',angle=90, vjust=0.2,size =12)) 

print(kmPlot) 

enter image description here

+0

Dai un'occhiata alla '' scale_area' e continuous_scale' – mnel

+0

@mnel:? L'ho fatto. Non molto utile. – Amateur

+0

@Amateur, cosa non è stato utile? Cosa non hai capito? –

risposta

9

Se si desidera loro side-by-side, allora è molto facile. Basta combinare entrambi set di dati e utilizzare facet_wrap()

ggplot(dataset, aes(x = N, y = PctCens, size = BiasAM, label = NULL)) + 
    geom_point(colour="red", shape = 16) + 
    scale_size_area(limits = c(1, 10), breaks = c(0, 10, 30, 50, 70, 100)) + 
    scale_x_continuous("Sample size", limits = c(0, 100)) + 
    scale_y_continuous("Percent censored", limits = c(0, 100)) + 
    facet_wrap(~ Method) + 
    theme_bw() + 
    theme(
    panel.grid.minor = element_blank(), 
    panel.background = element_blank(), 
    axis.ticks = element_blank(), 
    axis.title.x = element_text(face = 'bold', vjust = 0.2, size = 12), 
    axis.title.y = element_text(face = 'bold', angle = 90, vjust = 0.2, size = 12) 
) 

enter image description here

+0

Grazie mille. – Amateur

+0

Questo è un grande, esattamente quello di cui avevo bisogno. Ma sto riscontrando alcuni problemi con gli errori di deprezzamento di ggplot (specialmente le interruzioni di legenda). Esiste una versione aggiornata di questo codice per il nuovo ggplot? – Vinterwoo

+1

il codice è aggiornato e funziona in ggplot2 0.9.3.1 – Thierry