Как настроить размер метки оси Y только в R? - PullRequest
39 голосов
/ 23 сентября 2010

Как я могу настроить только размер меток оси Y в R?

Я знаю, что cex.axis изменяет размер меток оси, но влияет только на ось X.Почему и как я могу отрегулировать ось Y?

Ответы [ 3 ]

59 голосов
/ 23 сентября 2010

ucfagls правильно, если вы используете команду plot().Если нет, пожалуйста, дайте нам более подробную информацию.

В любом случае, вы можете управлять каждой осью отдельно, используя команду axis() и опции xaxt / yaxt в plot().Используя данные ucfagls, это становится:

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

опция yaxt = "n" необходима, чтобы избежать, чтобы команда plot построила график по оси y без изменений.Для оси x это работает точно так же:

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

См. Также файлы справки? Par и? Axis


Редактировать: как для барплота, посмотритев опциях cex.axis и cex.names:

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

17 голосов
/ 30 марта 2013

Поскольку заголовок предполагает, что мы хотим настроить размер меток, а не отметки, которые я рассчитывал, что я действительно могу добавить что-то к вопросу, вам нужно использовать mtext (), если вы хотите указать одну из Размеры этикетки, или вы можете просто использовать par(cex.lab=2) в качестве простой альтернативы. Вот более продвинутый пример mtext ():

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

Вам может потребоваться настроить параметр line=, чтобы получить оптимальное расположение текста, но кроме этого он действительно прост в использовании.

8 голосов
/ 23 сентября 2010

Не знаю, что вы делаете (полезно показать, что вы пробовали, но это не сработало), но ваше утверждение, что cex.axis влияет только на ось x, неверно:

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

по крайней мере для меня с:

> 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

Также, cex.axis влияет на маркировку меток. cex.lab используется для управления тем, что R называет метками оси.

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

но даже это работает как для оси x, так и для оси y.


После комментария Дженса об использовании barplot(). Извлеките аргумент cex.names для barplot(), который позволяет вам контролировать метки панели:

дата <- rpois (10, 3) имена (дата) <- ПИСЬМА [1:10] barplot (dat, cex.names = 3, cex.axis = 2) </p>

Как вы упомянули, что cex.axis воздействовал только на ось X, я полагаю, что у вас было horiz = TRUE в вашем barplot() вызове? Поскольку линейные метки не рисуются при вызове axis(), применение ответа Joris (в противном случае очень полезно) с отдельными вызовами axis() не поможет в этой ситуации, если вы используете barplot()

НТН

...