2010-09-23 21 views

Odpowiedz

51

ucfagls ma rację, zapewniając używasz polecenia plot(). Jeśli nie, podaj nam więcej szczegółów.

W każdym razie, można kontrolować każdej osi oddzielnie za pomocą polecenia axis() i xaxt/yaxt opcje plot(). Wykorzystując dane z ucfagls, staje:

plot(Y ~ X, data=foo,yaxt="n") 
axis(2,cex.axis=2) 

opcja yaxt = „n”, konieczne jest, aby uniknąć tego, że wykresy polecenie działka na osi y, bez zmiany. Na osi x, to działa dokładnie tak samo:

plot(Y ~ X, data=foo,xaxt="n") 
axis(1,cex.axis=2) 

Patrz również pliki pomocy par i oś


Edit:? Jak to jest na barplot, spojrzeć na CEX opcji .axis i cex.nazwy:

tN <- table(sample(letters[1:5],100,replace=T,p=c(0.2,0.1,0.3,0.2,0.2))) 

op <- par(mfrow=c(1,2)) 
barplot(tN, col=rainbow(5),cex.axis=0.5) # for the Y-axis 
barplot(tN, col=rainbow(5),cex.names=0.5) # for the X-axis 
par(op) 

alt text

+0

Cześć, przepraszam za bycie nieprecyzyjnym (znowu). Właściwie to używam barplota z numeryczną osią X, ale z ciągami dla etykiet osi y. Domyślam się, że cex.axis w barplocie nie może obsłużyć tekstu, ponieważ w pomocy dla parametru par jest napisane "cex.axis = współczynnik rozszerzenia dla numerycznych etykiet osi." Chyba muszę użyć twojego podejścia z dodatkowym poleceniem osi, aby zmodyfikować moją oś y. Wielkie dzięki – Jens

+0

@ Jen; Jeśli użyjesz 'barplot()' oddzielne wywołania 'axis()' nie będą działać, ponieważ etykiety prętów nie są "osią". Aby użyć 'axis()', musisz najechać na środkowe punkty taktu (są one zwracane przez 'barplot()'). Używanie wywołania 'text()' z wyłączonym obcinaniem może być również sposobem na zrobienie niestandardowej "osi" dla siatki. –

+0

@ucfagls W moim systemie to faktycznie działa na osi Y. Dla osi X daje zły wynik. Dostosowałem swoją odpowiedź na baron. –

7

Nie wiem, co robisz (pomocne, aby pokazać to, czego próbowałem, które nie działa), ale twoje twierdzenie, że cex.axis wpływa tylko oś x nie jest prawdziwe:

set.seed(123) 
foo <- data.frame(X = rnorm(10), Y = rnorm(10)) 
plot(Y ~ X, data = foo, cex.axis = 3) 

przynajmniej dla mnie:

> sessionInfo() 
R version 2.11.1 Patched (2010-08-17 r52767) 
Platform: x86_64-unknown-linux-gnu (64-bit) 

locale: 
[1] LC_CTYPE=en_GB.UTF-8  LC_NUMERIC=C    
[3] LC_TIME=en_GB.UTF-8  LC_COLLATE=en_GB.UTF-8  
[5] LC_MONETARY=C    LC_MESSAGES=en_GB.UTF-8 
[7] LC_PAPER=en_GB.UTF-8  LC_NAME=C     
[9] LC_ADDRESS=C    LC_TELEPHONE=C    
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C  

attached base packages: 
[1] grid  stats  graphics grDevices utils  datasets methods 
[8] base  

other attached packages: 
[1] ggplot2_0.8.8 proto_0.3-8 reshape_0.8.3 plyr_1.2.1 

loaded via a namespace (and not attached): 
[1] digest_0.4.2 tools_2.11.1 

również cex.axis wpływa na etykietowanie znacznikami. cex.lab służy do kontrolowania tego, co R nazywa etykietami osi.

plot(Y ~ X, data = foo, cex.lab = 3) 

ale nawet to działa zarówno na osi X, jak i Y.


Obserwowanie komentarza Jensa na temat używania barplot(). Sprawdź cex.names argument barplot(), który pozwala kontrolować etykiety bar:

dat < - rpois (10, 3) nazwy (DAT) < - litery [01:10] barplot (DAT, CEX. nazwy = 3, cex.axis = 2)

jak można wspomnieć, że cex.axis został wpływające tylko oś x Przypuszczam miałeś horiz = TRUE w wywołaniu barplot() jak również? Jak etykiety kreskowe nie są rysowane z axis() rozmowy stosowania Joris' (skądinąd bardzo przydatne) odpowiedzi z poszczególnych axis() połączeń nie pomoże w tej sytuacji ze używasz barplot()

HTH

13

Jak sam tytuł sugeruje, że chcemy, aby dostosować rozmiar etykiet i nie znaków podziałki Pomyślałem, że rzeczywiście może dodać coś na pytanie, trzeba użyć mtext(), jeśli chcesz określić jeden z rozmiarów etykiet, lub możesz po prostu użyć par(cex.lab=2) jako prostej alternatywy. Oto bardziej zaawansowany mtext() przykład:

set.seed(123) 
foo <- data.frame(X = rnorm(10), Y = rnorm(10)) 
plot(Y ~ X, data=foo, 
    yaxt="n", ylab="", 
    xlab="Regular boring x", 
    pch=16, 
    col="darkblue") 
axis(2,cex.axis=1.2) 
mtext("Awesome Y variable", side=2, line=2.2, cex=2) 

enter image description here

Być może trzeba ustawić opcję line= aby uzyskać optymalne ułożenie tekstu, ale poza tym jest bardzo łatwy w użyciu.

Powiązane problemy