如何在R中的图中增加字体大小?


146

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

例如

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

ps参数不会更改字体大小(但在R帮助中?par表示它是用于“文本的磅值(而不是符号)”。

也可以从诸如的绘图功能中分离更改字体大小hist吗?


Answers:


140

您想要类似cex=1.5参数的内容来将字体缩放150%。而是看到了help(par)作为也有cex.labcex.axis...


1
谢谢!“ ps = 1.5”有什么区别?
Tim

5
为什么cex = 1.5不起作用?但是是否必须根据cex.lab,cex.axis,cex.main来指定每个零件?cex = 1.5的作用是什么?
蒂姆(Tim)2010年

2
您读过help(par)有关ps吗?据我所知,似乎与文本无关。
Dirk Eddelbuettel

2
就是这样,部分原因肯定是为了与S语言的先前实现向后兼容。
Dirk Eddelbuettel

3
cex是放大倍数。默认值为1。如果需要指定字体大小,则最好准备深入阅读以?Devices,?pdfFonts,?pdf,?embedFonts以及许多其他文件开头的文档。
IRTFM

124

因此,总结现有的讨论,增加

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)

在此处输入图片说明

添加cex.lab = 1.5,cex.axis = 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)

在此处输入图片说明


2
顺便说一句,如果您要修改条形图中的轴(例如,对于randomForest或GBM中的可变重要性图),则需要使用cex.names(如果您是从竖直位置读取内容的人,则可能还会想要las=2
祖母传

22

请注意,使用文本绘制图时,“ cex ”确实会更改某些内容。例如,一个聚集的层次聚类图:

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

将产生一个带有普通大小文本的图:

在此处输入图片说明

plot(agn1, which.plots=2, cex=0.5)会产生这样一个:

在此处输入图片说明


faces2也要进行工作(切尔诺夫的面孔
2015年

在我的示例中,我不得不应用cex 而不是绘图,而是直接应用内部对象以产生效果:plot(ci(roc(data$a, data$b, auc=TRUE, of="auc", print.auc=TRUE, print.auc.cex=1.5, plot=TRUE), of="thresholds", thresholds="best")))
Tapper

21

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

  1. cex在中不起作用hist()。使用cex.axis了在轴上的数字,cex.lab为标签。
  2. cexaxis()两者都不起作用。使用cex.axis了在轴上的数字。
  3. hist()可以使用代替设置标签mtext()。您可以使用设置字体大小cex,但是使用值1 实际上会将字体设置为默认字体的1.5倍!!!您需要使用cex=2/3获取默认字体大小。至少,在Mac OS X的R 3.0.2下,使用PDF输出是这种情况。
  4. 您可以使用pointsizein 更改PDF输出的默认字体大小pdf()

我想期望R(a)实际执行其文档中规定的工作,(b)以预期的方式运行,这太逻辑上了。


2

当我想使轴标签变小,但其他尺寸保持不变时,我遇到了这个问题。对我有用的命令是:

par(cex.axis=0.5)

在plot命令之前。只记得放:

par(cex.axis=1.0)

绘图后,请确保字体恢复为默认大小。


2

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

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))

1

如果要在设置labels = 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)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.