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

时间:2010-11-22 02:37:19

标签: r plot

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

例如

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

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

还可以将字体大小与绘图功能(例如hist)分开吗?

8 个答案:

答案 0 :(得分:127)

您需要类似cex=1.5参数的内容才能将字体缩放150%。但请注意help(par),因为还有cex.labcex.axis,...

答案 1 :(得分:113)

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

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

enter image description here

答案 2 :(得分:21)

请注意,“ 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

答案 3 :(得分:19)

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

  1. cexhist()中不起作用。使用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. 您可以使用pointsize中的pdf()更改PDF输出的默认字体大小。
  5. 我认为,假设R(a)实际上做了它的文档应该做的事情,(b)以预期的方式表现,这太合乎逻辑了。

答案 4 :(得分:2)

当我想让轴标签变小时,我想到了这一点,但是其他一切都保持不变。对我有用的命令是:

par(cex.axis=0.5)

在情节命令之前。请记住:

par(cex.axis=1.0)

在绘图之后确保字体恢复到默认大小。

答案 5 :(得分:1)

如果您想在设置标签= 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)

答案 6 :(得分:1)

为了完整起见,使用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))

答案 7 :(得分:0)

或者,您可以使用图形设备的 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

这将保持相同的图像大小(以像素为单位),但会改变绘图的纵横比,包括字体大小。