2015-07-22 18 views
15

Mi piace molto il modo in cui lo ggplot2::geom_dotplot() può impilare bene punti verso il centro di una categoria, ma non riesco a combinarlo con un colore di riempimento.Come usare ggplot2's geom_dotplot() con riempimento e gruppo

consente di dare un'occhiata a un esempio:

# test data 
tmpData <- data.frame(x=c(rep('x', 3),rep('y', 3)), y=c(1,1,2,1,2,2), fill=rep(c('A', 'B', 'B'), 2)) 

# Plot without fill color 
ggplot(tmpData, aes(x=x, y=y)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4) 

Con conseguente questa trama:

Dotplot without color

Ma quando aggiungo l'argomento di riempimento:

ggplot(tmpData, aes(x=x, y=y, fill=fill)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4) 

Il riempimento sembra sovrascrivere il raggruppamento fatto su "x" causando i due punti (x, 1) (x , 1) per essere collassato vorrei che avessero colori diversi.

Dotplot with color

Quando provo a specificare il gruppo il colore di riempimento viene ignorato:

ggplot(tmpData, aes(x=x, y=y, group=x, fill=fill)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4) 

Dotplot with group specified

il crollo sembra essere evitabile da stackgroups permettendo:

ggplot(tmpData, aes(x=x, y=y, fill=fill)) + 
    geom_dotplot(binaxis = "y", stackgroups=TRUE, stackdir = "center", dotsize=4) 

dotpoot with stackgroups

Ma poi perdo il centraggio dei dati su "x" e "y" che si trovano negli altri 3 grafici.

C'è un modo per utilizzare geom_dotplot() con entrambi i gruppi e riempire?

+2

Posso confermare che questo problema sorge ancora in 'ggplot2 1.0.1', e ho sollevato un problema con Hadley in questo senso: https://github.com/hadley/ggplot2/issues/1359 – maxheld

risposta

3

Se siete aperti a un po 'di una soluzione hacky solo per farlo come si desidera guardare .. . è possibile sovrascrivere il comando di riempimento semplicemente dotandolo di un vettore di nomi di colori:

tmpData$colorname <- rep(c('red','blue','blue'),2) 

ggplot(tmpData, aes(x=x, y=y)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize=4, fill=tmpData$colorname) 

enter image description here

+0

Excily quello che stavo cercando - grazie! –

2

Credo che bisogna aggiungere l'argomento position = "dodge":

ggplot(tmpData, aes(x = x, y = y, fill = fill,)) + 
    geom_dotplot(binaxis = "y", stackdir = "center", dotsize = 4, position = "dodge") 

enter image description here

+2

Ho fatto provalo ma questa soluzione rimuove il bel centraggio dei punti attorno a "x" e "y" (proprio come stackgroups = TRUE). –

+0

@Kristoffer Vitting-Seerup Non è esattamente lo stesso dei gruppi di stack = VERO, sono tracciati simmetricamente, gruppo A a sinistra e B a destra degli assi verticali x e y. Quindi i gruppi sono allineati mentre nel tuo esempio non lo sono. – mpalanco

+0

Vero, ma non è quello che volevo fare. Li ho voluti centrati proprio come nella prima trama, solo con il colore aggiunto :-) –

Problemi correlati