如何在 R 中增加绘图中的字体大小?
Posted
技术标签:
【中文标题】如何在 R 中增加绘图中的字体大小?【英文标题】:How to increase font size in a plot in R? 【发布时间】:2011-05-13 14:39:38 【问题描述】:我很困惑。在标题、标签和绘图的其他位置增加文本字体大小的正确方法是什么?
例如
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
?
【问题讨论】:
How to change the label size of an R plot的可能重复 【参考方案1】:您需要类似cex=1.5
参数来将字体缩放150%。但是请看help(par)
,因为还有cex.lab
、cex.axis
、...
【讨论】:
谢谢!与“ps=1.5”有什么区别? 为什么 cex=1.5 不起作用?但是必须根据 cex.lab、cex.axis、cex.main 来指定每个部分? cex=1.5 有什么用? 你读过help(par)
关于ps
的内容吗?据我所知,似乎与文本无关。
就是这样,部分肯定是为了向后兼容 S 语言的先前实现。
cex 是放大倍数。默认值为 1。如果您需要指定字体大小,您最好准备好深入研究以 ?Devices、?pdfFonts、?pdf、?embedFonts 等开头的文档。【参考方案2】:
因此,总结现有的讨论,添加
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)
【讨论】:
顺便说一句,如果您尝试修改条形图中的轴(例如随机森林或 GBM 中的变量重要性图),您需要使用cex.names
(如果您是人类直立阅读的人,你可能还想要las=2
)【参考方案3】:
请注意,“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
工作(来自Chernoff faces)
在我的示例中,我必须应用 cex not 直接绘制内部对象以产生效果: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")))
【参考方案4】:
通过反复试验,我确定设置字体大小需要以下内容:
cex
在 hist()
中不起作用。使用cex.axis
作为坐标轴上的数字,使用cex.lab
作为标签。
cex
在 axis()
中也不起作用。使用cex.axis
作为坐标轴上的数字。
代替使用hist()
设置标签,您可以使用mtext()
设置它们。您可以使用cex
设置字体大小,但是使用值1 实际上会将字体设置为默认值的1.5 倍!!!您需要使用cex=2/3
来获取默认字体大小。至少,在 Mac OS X 的 R 3.0.2 下是这种情况,使用 PDF 输出。
您可以在pdf()
中使用pointsize
更改PDF 输出的默认字体大小。
我认为期望 R (a)实际执行其文档中所说的应该执行的操作,(b)以预期的方式运行,这太合乎逻辑了。
【讨论】:
【参考方案5】:当我想使轴标签更小时遇到这个问题,但其他所有内容都保持相同大小。对我有用的命令是:
par(cex.axis=0.5)
在 plot 命令之前。只要记住放:
par(cex.axis=1.0)
绘图后确保字体恢复到默认大小。
【讨论】:
【参考方案6】:如果你想在设置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)
【讨论】:
【参考方案7】:为了完整起见,使用 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))
【讨论】:
【参考方案8】:或者,您可以使用图形设备的 res 参数更改保存图像的分辨率:
png(file = "myplot1.png", bg = "transparent", res = 100)
plot(1:10)
dev.off()
png(file = "myplot2.png", bg = "transparent", res = 200)
plot(1:10)
dev.off()
这将保持相同的图像大小(以像素为单位),但会改变绘图的纵横比,包括字体大小。
【讨论】:
以上是关于如何在 R 中增加绘图中的字体大小?的主要内容,如果未能解决你的问题,请参考以下文章