r - 在不改变字体大小的情况下控制字体粗细

标签 r fonts plot ggplot2 font-size

我正在寻找一种方法来控制 R 中绘制的文本的线条粗细没有改变字符的尺寸。这是一个示例(不使用 R ):

varying font weights

中间字的厚度是顶部的两倍,但尺寸相同(因此没有发生缩放)。最下面的字实际上是两个字:一个红色的字叠加在一个沉重的白色字上,以创建分色(对于注释繁忙的情节特别有用)。

这是我拼凑起来的一组命令来尝试复制上图:

png("font.png",width=1.02, height=1.02, units="in", res=150)
par(ps=10, font=1, bg="light gray", col="black", mai=rep(0.02,4), pin=c(1,1))
plot.new()
box()
text(0.5,0.85,"FONT",cex=1)
text(0.5,0.6,"FONT",cex=2)
text(0.5,0.3,"FONT",cex=2,col="white")
text(0.5,0.3,"FONT",cex=1,col="red")
text(0.5,0.1,"FONT",cex=1, font=2, col="white")
text(0.5,0.1,"FONT",cex=1, font=1, col="red")
dev.off()

给予:

replicating in R

所以效果和把 font-face 改成粗体是一样的,只是大小的差别不大,叠加的时候不明显。 par帮助页面似乎没有对此进行特定设置。谁有想法?

注意更改 sizeggplot2也没有产生我想要的效果,上次我检查过。

最佳答案

您可以尝试添加以圆形图案稍微移动的文本的多个版本,

yeah

library(grid)
 stextGrob <- function (label, r=0.02, x = unit(0.5, "npc"), y = unit(0.5, "npc"), 
                        just = "centre", hjust = NULL, vjust = NULL, rot = 0, check.overlap = FALSE, 
                        default.units = "npc", name = NULL, gp = gpar(), vp = NULL){

   let <- textGrob("a", gp=gp, vp=vp)
   wlet <- grobWidth(let)
   hlet <- grobHeight(let)

   tg <- textGrob(label=label, x=x, y=y, gp=gpar(col="red"),
                  just = just, hjust = hjust, vjust = vjust, rot = rot,
                  check.overlap = check.overlap, 
                  default.units = default.units)

   tgl <- c(lapply(seq(0, 2*pi, length=36), function(theta){

     textGrob(label=label,x=x+cos(theta)*r*wlet,
              y=y+sin(theta)*r*hlet, gp=gpar(col="white"),
              just = just, hjust = hjust, vjust = vjust, rot = rot,
              check.overlap = check.overlap, 
              default.units = default.units)

     }), list(tg))


   g <- gTree(children=do.call(gList, tgl), vp=vp, name=name, gp=gp)

 }

 grid.stext <- function(...){
   g <- stextGrob(...)
   grid.draw(g)
   invisible(g)
 }

 grid.newpage()
 grid.rect(gp=gpar(fill="grey"))
 grid.stext("Yeah", gp=gpar(cex=4))

有一个使用潜伏在 R-help 文件中的基本图形的版本,它的灵感来自于此。

关于r - 在不改变字体大小的情况下控制字体粗细,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7734535/

相关文章:

css - Safari 在悬停时加粗浅色@font-face 字体

opengl - 使用GLUT位图字体

r - 如何调整 y 轴而不弄乱 r 中多个直方图的 x 轴?

r - 彩色箱线图

r - 记录错误消息并将其写入数据框

visual-studio-code - 如何更改 VS Code 设置以使用 JetBrains Mono 字体

R:abline 没有在我的图表中添加线条

R 绘图在我的 Windows 上不起作用,但plot.default 可以

R 氧气 2 : How to document a function generated by another function?

r - 如何将向量转换为具有固定维数的数据帧