2012-09-17 3 views
5

Sto provando a creare un semplice densityplot in R in ggplot2. Ecco il mio codice che funziona alla grande.R ggplot2 - Trama semplice - impossibile specificare i limiti dell'asse di registro

d <- ggplot(result, aes(x=result$baseMeanA)) 
d + geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
scale_x_log10() + scale_y_continuous(limits = c(0, 0.45)) 

Il problema è che non posso regolare l'asse x come vorrei, in numeri negativi.

scale_x_log10(limits= c(1, 10000)) 

grandi opere, ma

scale_x_log10(limits= c(-1, 10000)) 

non funziona affatto! Mi dà questo errore:

Error in if (zero_range(range)) { : missing value where TRUE/FALSE needed

Please help!

+1

Solo supposizioni, ma forse si desidera che i limiti della scala originale passino da 0,1 a 10000 (cioè log10 (x) passa da -1 a 5)? Presumibilmente non vuoi che log10 (x) passi da -1 a 10000, perché il limite superiore sarebbe quindi a 10^10000 (un valore * molto * grande, dato che ci sono circa 10^80 atomi nell'universo osservabile http : //en.wikipedia.org/wiki/Observable_universe ...) Se ho ragione, allora voglio 'scale_x_log10 (limits = c (0.1,1e5))' –

+0

Sì, penso di aver capito ora. Non posso usare numeri negativi in ​​una scala di registro .. Grazie. Ora vedo cosa devo fare, ho bisogno di aggiungere uno pseudonimo di 1 o 0.1 al risultato, in modo che visivamente risulti corretto, altrimenti perderò tutti i numeri molto piccoli in qualche modo. – user1678000

risposta

2

Quello che stai cercando di fare non ha molto senso, vero? Il registro dei numeri negativi non è qualcosa che possiamo rappresentare in R

R> log(-1) 
[1] NaN 
Warning message: 
In log(-1) : NaNs produced 

modo in cui dovrebbe R disegnare l'asse?

+0

Sì, hai ragione probabilmente. Non lo sapevo. Penso di sapere ora che per risolvere il mio problema devo aggiungere uno pseudonimo ai miei risultati in modo che io possa visualizzarlo visivamente. – user1678000

3

Se la gamma dei limiti dovrebbe essere in parte sotto lo zero, si potrebbe log10-transform la variabile e specificare i limiti per una scala continua:

ggplot(result, aes(x=log10(baseMeanA))) + 
    geom_density(colour="darkgreen", size=2, fill="darkgreen") + 
    scale_x_continuous(limits = c(-1, 10000) + 
    scale_y_continuous(limits = c(0, 0.45)) + 
1

e^y non può essere negativo. La costante esponenziale e è positiva, e y è solo un esponente. e definizione matematica:

log (x) = y < ==> x = e^y

Proprio per questo R non può calcolare log (x) se x è negativo. Va solo contro la definizione matematica.

Spero che questo aiuti a capire perché questa trama ti sta dando problemi.