【问题标题】:How to increase font size in a plot in R?如何在 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

【问题讨论】:

标签: r plot


【解决方案1】:

您需要类似cex=1.5 参数来将字体缩放150%。但是请看help(par),因为还有cex.labcex.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】:

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

  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. 您可以在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()                                                   
          

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-06-24
            • 2017-05-10
            • 2012-03-03
            • 1970-01-01
            • 2014-12-15
            相关资源
            最近更新 更多