如何在R中仅调整y轴标签的大小?

51

我该如何在R中仅调整Y轴标签的大小?

我知道cex.axis可以改变轴标签的大小,但它只影响X轴。为什么会这样,我该如何调整Y轴?

3个回答

73

ucfagls是正确的,只要您使用plot()命令。如果不是,请给我们更多细节。

无论如何,您可以使用plot()中的axis()命令和xaxt/yaxt选项单独控制每个轴。使用ucfagls的数据,这变成:

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

yaxt="n"选项是必要的,以避免plot命令在不更改y轴的情况下绘制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


你好,很抱歉我又表达不够清晰了。实际上,我正在运行一个数值 X 轴和字符串 Y 轴标签的条形图。我猜 barplot 中的 cex.axis 无法处理文本,因为在 par 的帮助文件中它说“cex.axis = 数字轴标签的扩展因子”。我想我必须使用你的方法,使用额外的 axis 命令来修改我的 Y 轴。非常感谢。 - Jens
@Jens;如果使用barplot(),则分离axis()调用将无法工作,因为条形标签不是“轴”。要使用axis(),您需要拥有条形图中点(这些由barplot()返回)。使用打开剪辑的text()调用也可能是进行条形图自定义“轴”的一种方法。 - Gavin Simpson
@ucfagls 在我的系统上,对于Y轴确实可以工作。对于X轴,它给出了错误的结果。我为条形图调整了我的答案。 - Joris Meys
@Jens,您能否编辑您的问题并指明这是一个条形图?谢谢。 - Joris Meys
确实,但是y轴是一个“轴”还是一组带标签的条形图取决于barplot()函数的horiz参数。Jens遇到的问题是cex.axis无法为其中一个轴(在他的情况下是x轴因此我们推测他使用了默认的horiz = FALSE)。我的评论是,不是说axis()有问题,而是对于x轴(在Jens的情况下)或条形图标签,不能通过单独调用axis()进行控制[很难]。最终问题在于没有阅读?barplot并且没有向我们提供可重现的示例来显示问题。 - Gavin Simpson

22
作为标题所示,我们想要调整标签的大小而不是刻度线。我认为我可能需要在问题上添加一些内容,如果您想指定其中一个标签的大小,则需要使用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=选项以获得最佳文本定位,但除此之外,它非常易于使用。

9

不知道你在做什么(展示一下你尝试过但没成功的内容会有帮助),但是你声称只影响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轴。


回答Jens有关使用barplot()的评论。请注意barplot()中的cex.names参数,它允许您控制条形图标签:

dat <- rpois(10, 3) names(dat) <- LETTERS[1:10] barplot(dat, cex.names = 3, cex.axis = 2)

由于您提到cex.axis仅影响了x轴,我假设您在barplot()调用中同时使用了horiz = TRUE。由于条形图标签未使用axis()绘制,因此应用Joris的(非常有用的)答案并使用单独的axis()调用在您使用barplot()的情况下无法帮助解决这种情况。

希望能帮到你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接