2012-09-01 18 views
7

Utilizzando ggplot per tracciare simboli Area proporzionale sembra richiedere utilizzando sqrt() per raggiungere la vera proporzionalità:simboli Proporzionalmente dimensioni in ggplot

require(ggplot2) 

t <- data.frame(x=rep(c(1:5),5), y=rep(c(1:5),each=5), s=round(seq(1,100,length.out=25))) 
t 
p <- ggplot(data=t, aes(x=x,y=y)) 

# direct size-to-variable mapping 
p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) + 
    scale_size(range = c(1, 40)) + 
    geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1) 

# proportional area size-to-variable mapping 
p + geom_point(aes(size=sqrt(s)), pch=22, fill='#0000FF75', col=NA) + 
    scale_size(range = c(1, 40)) + 
    geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1) 

enter image description here

Come si può vedere le etichette sono radicate, quando ho bisogno di loro per mostra i dati originali. Ho provato a giocare con le opzioni scale_size ma nulla funziona. Qualcuno sa una correzione a questo, o c'è forse un'impostazione oscura per ottenere la mappatura delle dimensioni dell'area proporzionale?

Grazie in anticipo.

risposta

7

È possibile utilizzare scale_area invece di scale_size:

p + geom_point(aes(size=s), pch=22, fill='#0000FF75', col=NA) + 
    scale_area(range = c(1, 40)) + 
    geom_text(data=t, aes(x=x,y=y,label=s),size=3,vjust=1) 

enter image description here


sono d'accordo, non è del tutto ovvio, ma non che obsure sia - v'è un esempio utilizzando scale_area nella guida per ?scale_size.

+0

Grazie a @Andrie che lo ha risolto. Ho modificato il titolo di questa domanda per riflettere la soluzione. – geotheory

+2

Questo è ora 'scale_size_area' come 'scale_area' è deprecato .. – geotheory

Problemi correlati