2013-04-20 8 views
23

Sto provando a generare un barplot, ma la scala dell'asse y è troppo corta. Qui è il mio codice:Scala R Bilancia dell'asse Y troppo corta

barplot(as.matrix(dat), log="y", ylim=c(10000,100000000), beside=TRUE, 
     ylab = "Number of reads", col = c("gray","black","white")) 

short y axis

lascia la stanza per l'asse (come da ylim), ma non riempie l'asse reale. Ho provato il barplot e ho provato alcune cose (da google su Google ho pensato che lo xpd = F, yaxs = c(10000,10000000,5 avrebbe dovuto funzionare, ma non è stato così).

So che è una cosa da poco, ma è esattamente il tipo di problema su cui mi blocco da anni, invece di lavorare, quindi qualsiasi aiuto sarebbe molto apprezzato!

Modifica: Cheers per l'ingresso ragazzi!

Ho inizialmente tracciato senza ylim, ma finisce con un asse ancora più bizzarro (con lo stesso problema); Ho effettivamente scelto i miei valori ylim per dargli un asse più distanziato. original no ylim

Ecco i dati:

dat <- read.table(text="D2,D3n,D3m,D4n,D4m 
21234722,34262282,31920464,25486357,20712943 
35343,64403,22537,39934,46547 
126646,312286,101105,81537,76944", header=TRUE, sep=",") 

Edit 2: @DWin aveva ragione - ho aggiornato il mio R, ed ora trame bene - grazie a tutti!

+0

potrebbe essere il suo meglio per tracciare 'log (y)' – Nishanth

+2

Puoi pubblicare 'dat' . in modo che possiamo eseguire il codice. – Nishanth

+1

Hmm. Ho un asse log10 più lungo. Va fino a 1e + 08. Esecuzione di R 3.0.0 su MacOS, Snow Leopard. Quindi forse hai bisogno di dirci quale sia la tua configurazione, e se è vecchia quindi si prega di aggiornare. Penso anche che la tua trama sia molto fuorviante. –

risposta

26

Vedo che provi a impostare ylim in modo errato fornisci valori errati. Questo cambierà la scala della trama (come uno zoom) Ad esempio questa:

par(mfrow=c(2,1)) 
tN <- table(Ni <- stats::rpois(100, lambda = 5)) 
r <- barplot(tN, col = rainbow(20),ylim=c(0,50),main='long y-axis') 
r <- barplot(tN, col = rainbow(20),main='short y axis') 

enter image description here

Un'altra opzione è quella di tracciare senza assi, e impostare manualmente tramite axis e usr:

require(grDevices) # for colours 
par(mfrow=c(1,1)) 
r <- barplot(tN, col = rainbow(20),main='short y axis',ann=FALSE,axes=FALSE) 
usr <- par("usr") 
par(usr=c(usr[1:2], 0, 20)) 
axis(2,at=seq(0,20,5)) 

enter image description here

+1

Ha impostato 'ylim', solo per un valore inappropriato. –

+0

@MatthewLundberg il mio male! Non ho visto questo! – agstudy

-3
barplot(data) 

enter image description here

barplot(data, yaxp=c(0, max(data), 5)) 

enter image description here

yaxp = c (Miny assi, maxy-asse, intervallo)

+0

Questo non funziona in R 3.3.2. –

+0

Mi chiedo perché ridimensionare al massimo l'asse Y non è l'impostazione predefinita: se si tenta di posizionare l'altezza delle barre sopra ogni barra, il testo delle barre alla massima altezza viene tagliato. Considerare questa variante: p <- barplot (come.matrice (dat), ylab = "Numero di letture", col = c ("grigio", "nero", "bianco")); y <- lapply (dat, FUN = max); testo (x = p, y = y, etichette = y, colonna = "rosso", pos = 3) –