如何增加字体大小的情节在 R?

我很困惑。什么是正确的方法来增加字体大小的文字在标题,标签和其他地方的情节?

比如说

x <- rnorm(100)
hist(x, xlim=range(x), xlab= "Variable Label",
ylab="density", main="Title of plot", prob=TRUE, ps=30)

ps参数不改变字体大小(但是它在 ?par的 R Help 中说它用于“文本的点大小(但不是符号)”。

另外,是否有可能将改变字体大小与绘图功能(如 hist)分开?

617966 次浏览

您需要类似 cex=1.5参数的东西来将字体缩放150% 。但是要看到 help(par),因为还有 cex.labcex.axis,..。

因此,为了总结现有的讨论,补充说明

cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5

1.5可以是2、3等等,默认值为1将增加字体大小。

x <- rnorm(100)

CEX 改变不了什么

hist(x, xlim=range(x),
xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE)


hist(x, xlim=range(x),
xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE,
cex=1.5)

enter image description here

添加 cex.lab = 1.5,cex.ax = 1.5,cex.main = 1.5,cex.sub = 1.5

hist(x, xlim=range(x),
xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE,
cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5)

enter image description here

请注意,当使用文本绘制图形时,“ < em > cex ”确实会发生变化。例如,聚集性等级集群的情节:

library(cluster)
data(votes.repub)
agn1 <- agnes(votes.repub, metric = "manhattan", stand = TRUE)
plot(agn1, which.plots=2)

将生成一个具有正常大小文本的情节:

enter image description here

plot(agn1, which.plots=2, cex=0.5)将制作这部电影:

enter image description here

经过反复试验,我确定设置字体大小需要以下内容:

  1. cexhist()中不起作用。轴上的数字使用 cex.axis,标签使用 cex.lab
  2. cexaxis()中也不起作用。对轴上的数字使用 cex.axis
  3. 您可以使用 mtext()设置标签,而不是使用 hist()设置标签。您可以使用 cex设置字体大小,但使用值1 实际上将字体设置为默认值的1.5倍! ! !则需要使用 cex=2/3来获得默认的字体大小。至少,在 MacOSX 的 R3.0.2中是这种情况,使用 PDF 输出。
  4. 可以使用 pdf()中的 pointsize更改 PDF 输出的默认字体大小。

我认为期望 R (a)实际做它的文档所说的应该做的事情,(b)按照预期的方式行事是非常符合逻辑的。

如果您想在设置 label = TRUE 时增加直方图标签的字体

bp=hist(values, labels = FALSE,
main='Histogram',
xlab='xlab',ylab='ylab',  cex.main=2, cex.lab=2,cex.axis=2)


text(x=bp$mids, y=bp$counts, labels=bp$counts ,cex=2,pos=3)

当我想把轴标签做得更小,但是其他的都保持一样大小的时候,我遇到了这个问题。对我有效的命令是:

par(cex.axis=0.5)

在 plot 命令之前,只要记住:

par(cex.axis=1.0)

后的情节,以确保字体回到默认大小。

为了完整起见,使用 cex = 1.5将文本缩放150% ,这里有一个完整的解决方案:

cex <- 1.5
par(cex.lab=cex, cex.axis=cex, cex.main=cex)
plot(...)
par(cex.lab=1, cex.axis=1, cex.main=1)

我建议像这样包装东西,以减少样板,例如:

plot_cex <- function(x, y, cex=1.5, ...) {
par(cex.lab=cex, cex.axis=cex, cex.main=cex)
plot(x, y, ...)
par(cex.lab=1, cex.axis=1, cex.main=1)
invisible(0)
}

然后你可以像这样使用:

plot_cex(x=1:5, y=rnorm(5), cex=1.3)

...在 R 中称为椭圆,用于将其他参数传递给函数。因此,它们通常用于绘图。因此,下面的工作正如预期的那样:

plot_cex(x=1:5, y=rnorm(5), cex=1.5, ylim=c(-0.5,0.5))

或者,您可以使用图形设备的 res 参数更改保存的图像的分辨率:

png(file = "myplot1.png",  bg = "transparent", res = 100)
plot(1:10)
dev.off()

plot 1

png(file = "myplot2.png", bg = "transparent", res = 200)
plot(1:10)
dev.off()

plot2

这将以像素为单位保持相同的图像大小,但会改变图像的长宽比,包括字体大小。

只是添加一个简单的示例,其中我使用 cex 在图表中更改几种字体大小,包括使用 line 命令在图表中添加一个字幕。

par(cex=1, cex.main=2, cex.lab = 1.5, cex.sub=0.8)
plot(gam_d13C_year, residuals = TRUE, pch = 1, mar=c(8, 2, 2, 2) + 1, bty="n")
title(main = TeX('Effect of year in $\\delta ^{13}C$'))
title(sub =paste(gam_d13C_year_stats),line = -2, adj = 0.5)

Change size of font in graph with R