安装字体以便 R postscript() 设备可以识别它们
Installing fonts so that R postscript() device can recognise them
根据 post 中的建议,我正在尝试将衬线字体(或 'family' 字体)安装到 R 中,以便我可以将 ggplots 保存为 .eps文件。尽管提供的建议有效,但我想尝试解决该问题以备将来使用。
这是生成问题的代码。
library(bayesplot)
df <- data.frame(xVar = rnorm(1e4,0,1), yVar = rnorm(1e4,2,1), zVar = rnorm(1e4,4,1))
t <- bayesplot::mcmc_trace(df)
t
现在当我去保存图形时我得到这个错误
ggplot2::ggsave(filename = "tPlot.eps",
plot = t,
device = "eps",
dpi = 1200,
width = 15,
height = 10,
units = "cm")
哪个会抛出错误
Error in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)) :
family 'serif' not included in postscript() device
之前post回答者建议我下载extrafont
包。
我运行
View(fonttable())
但是衬线字体好像没有安装。
然后我试了
font_addpackage(pkg = "serif")
但是我得到了错误
Error in font_addpackage(pkg = "serif") :
Unknown font package type: not type1 or ttf.
有谁知道如何安装衬线字体以便 R 可以 recognise/use 吗?
使用软件包 extrafont
时,必须先安装字体,然后才能提供给用户使用。这是通过函数 font_import
.
完成的
library(extrafont)
font_import() # This takes several minutes
现在我们可以看到已安装和可用的字体有哪些。从文档中,help("fonts")
.
Description
Show the fonts that are registered in the font table (and available for embedding)
fonts_installed <- fonts()
serif1 <- grepl("serif", fonts_installed, ignore.case = TRUE)
sans1 <- grepl("sans", fonts_installed, ignore.case = TRUE)
fonts_installed[serif1 & !sans1]
sum(serif1 & !sans1)
#[1] 458
有 458 种字体可用。
另一种查看字体 table 的方法是使用函数 fonttable
,但返回的字体不一定可用于嵌入。来自 help("fonttable")
.
Description
Returns the full font table
请注意,函数 returns 是一个数据帧,因此调用了下面的 str
(输出省略)。
df_font <- fonttable()
str(df_font)
serif2 <- grepl("serif", df_font$FontName, ignore.case = TRUE)
sans2 <- grepl("sans", df_font$FontName, ignore.case = TRUE)
df_font$FontName[serif2 & !sans2]
最后看看绘图功能是否适用于 postscript 设备。
library(bayesplot)
df <- data.frame(xVar = rnorm(1e4,0,1), yVar = rnorm(1e4,2,1), zVar = rnorm(1e4,4,1))
p <- bayesplot::mcmc_trace(df)
p
ggplot2::ggsave(filename = "tPlot.eps",
plot = p,
device = "eps",
dpi = 1200,
width = 15,
height = 10,
units = "cm")
根据
这是生成问题的代码。
library(bayesplot)
df <- data.frame(xVar = rnorm(1e4,0,1), yVar = rnorm(1e4,2,1), zVar = rnorm(1e4,4,1))
t <- bayesplot::mcmc_trace(df)
t
现在当我去保存图形时我得到这个错误
ggplot2::ggsave(filename = "tPlot.eps",
plot = t,
device = "eps",
dpi = 1200,
width = 15,
height = 10,
units = "cm")
哪个会抛出错误
Error in grid.Call(C_stringMetric, as.graphicsAnnot(x$label)) :
family 'serif' not included in postscript() device
之前post回答者建议我下载extrafont
包。
我运行
View(fonttable())
但是衬线字体好像没有安装。
然后我试了
font_addpackage(pkg = "serif")
但是我得到了错误
Error in font_addpackage(pkg = "serif") :
Unknown font package type: not type1 or ttf.
有谁知道如何安装衬线字体以便 R 可以 recognise/use 吗?
使用软件包 extrafont
时,必须先安装字体,然后才能提供给用户使用。这是通过函数 font_import
.
library(extrafont)
font_import() # This takes several minutes
现在我们可以看到已安装和可用的字体有哪些。从文档中,help("fonts")
.
Description
Show the fonts that are registered in the font table (and available for embedding)
fonts_installed <- fonts()
serif1 <- grepl("serif", fonts_installed, ignore.case = TRUE)
sans1 <- grepl("sans", fonts_installed, ignore.case = TRUE)
fonts_installed[serif1 & !sans1]
sum(serif1 & !sans1)
#[1] 458
有 458 种字体可用。
另一种查看字体 table 的方法是使用函数 fonttable
,但返回的字体不一定可用于嵌入。来自 help("fonttable")
.
Description
Returns the full font table
请注意,函数 returns 是一个数据帧,因此调用了下面的 str
(输出省略)。
df_font <- fonttable()
str(df_font)
serif2 <- grepl("serif", df_font$FontName, ignore.case = TRUE)
sans2 <- grepl("sans", df_font$FontName, ignore.case = TRUE)
df_font$FontName[serif2 & !sans2]
最后看看绘图功能是否适用于 postscript 设备。
library(bayesplot)
df <- data.frame(xVar = rnorm(1e4,0,1), yVar = rnorm(1e4,2,1), zVar = rnorm(1e4,4,1))
p <- bayesplot::mcmc_trace(df)
p
ggplot2::ggsave(filename = "tPlot.eps",
plot = p,
device = "eps",
dpi = 1200,
width = 15,
height = 10,
units = "cm")