2013-04-20 19 views
23

Próbuję wygenerować pręt, ale skala osi y jest zbyt krótka. Oto mój kod:Skala w skali osi Y w skali Y jest zbyt krótka

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

short y axis

Pozostawia miejsce na osi (zgodnie ylim), ale nie wypełnia w rzeczywistej osi. Przeszedłem? Barplot i wypróbowałem kilka rzeczy (od szukania w Google myślę, że powinno działać xpd = F, yaxs = c(10000,10000000,5, ale tak się nie stało).

Wiem, że to drobnostka, ale to jest właśnie ten problem, który utknąłem na przestrzeni wieków, zamiast pracować, więc każda pomoc będzie bardzo cenna!

Edytuj: Pozdrowienia dla chłopaków z wejściem!

Początkowo działałem bez ylim, ale kończyło się to na jeszcze dziwniejszej osi (z tym samym problemem); Właściwie wybrałem moje wartości Ylim, aby nadać mu ładniejszą odległość między osiami. original no ylim

Oto dane:

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 miał rację - ja updated mój R, a teraz to działki w porządku - dzięki wszystkim!

+0

może być jej lepiej wykreślić 'log (y)' – Nishanth

+2

można zakładać 'dat' . abyśmy mogli uruchomić kod. – Nishanth

+1

Hmm. Dostaję dłuższą oś log10 y. Idzie do 1e + 08. Uruchamianie wersji 3.0.0 na MacOS, Snow Leopard. Może więc musisz powiedzieć nam, co to jest konfiguracja, a jeśli jest stara, zaktualizuj ją. Myślę też, że twoja fabuła jest bardzo myląca. –

Odpowiedz

26

Widzę, że próbujesz ustawić ylim źle podajesz złe wartości. Spowoduje to zmianę skali wykresu (jak zoom) patrz na przykład w ten sposób:

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

Inną opcją jest wykreślić bez osi i ustawić go ręcznie za pomocą axis i 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

Ustawił 'ylim', tylko na niewłaściwą wartość. –

+0

@MatthewLundberg moje złe! Nie widzę tego! – agstudy

-3
barplot(data) 

enter image description here

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

enter image description here

yaxp = c (miny-osiowe, maxy oś, Interval)

+0

To nie działa w wersji 3.3.2. –

+0

Zastanawiam się, dlaczego skalowanie osi Y do maksimum nie jest domyślne: jeśli spróbujesz umieścić wysokości słupków nad każdym taktem, przycina się tekst słupków na maksymalnej wysokości. Rozważmy ten wariant: p <- barplot (as.matrix (dat), ylab = "Liczba odczytów", col = c ("szary", "czarny", "biały")); y <- lapply (dat, FUN = max); tekst (x = p, y = y, etykiety = y, col = "czerwony", pos = 3) –