创建svg图表而非png时,R标记字体宽度未知警告
我有一个报告,我在rmarkdown中输出了一些带有device=svg的ggplot图表。输出格式为html。不幸的是,我收到了很多如下的警告。如果指定device=png,则不会收到任何警告创建svg图表而非png时,R标记字体宽度未知警告,r,svg,fonts,png,r-markdown,R,Svg,Fonts,Png,R Markdown,我有一个报告,我在rmarkdown中输出了一些带有device=svg的ggplot图表。输出格式为html。不幸的是,我收到了很多如下的警告。如果指定device=png,则不会收到任何警告 ## Warning in grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, : ## font width unknown for character 0x53 有人知道为什么png工作(或者至少不给出任何警告)而svg不工作吗
## Warning in grid.Call(L_textBounds, as.graphicsAnnot(x$label), x$x, x$y, :
## font width unknown for character 0x53
有人知道为什么png工作(或者至少不给出任何警告)而svg不工作吗?下面是会话信息和不可复制的代码。我使用的是extrafont,我想可能与此有关
会话信息:
R version 3.3.1 (2016-06-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
locale:
[1] LC_COLLATE=Swedish_Finland.1252 LC_CTYPE=Swedish_Finland.1252
LC_MONETARY=Swedish_Finland.1252 LC_NUMERIC=C
[5] LC_TIME=Swedish_Finland.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] extrafont_0.17 cairoDevice_2.23 Cairo_1.5-9 RODBC_1.3-13
loaded via a namespace (and not attached):
[1] magrittr_1.5 htmltools_0.3.5 tools_3.3.1 yaml_2.1.13
Rcpp_0.12.5 stringi_1.1.1 rmarkdown_1.0 extrafontdb_1.0
[9] knitr_1.13 stringr_1.0.0 digest_0.6.9 Rttf2pt1_1.3.4
evaluate_0.9
代码块:
```{r plot2, echo = FALSE, fig.show='hold', out.width='50%', dev=c('svg')}
ggplot代码示例:
ggplot(dt.bar2_1,
aes(x=factor(Mon), y=nsk_rel, fill =Class)) +
geom_bar(stat="identity", position = "dodge")+
scale_fill_manual(values = c("#6baed6","#3182bd"), name = "Type") +
scale_y_continuous(labels = percent,
breaks = c(0, 0.02, 0.04, 0.06, 0.08, 0.10),
limits = c(0, 0.10))+
theme(axis.text.x = element_text(size=11),
axis.text.y = element_text(size=11))+
xlab("Month") + ylab("Freq")+
ggtitle(Title.2_1) +
theme(plot.title = element_text(family = "Trebuchet MS",
color="#666666",
face="bold",
size=16,
hjust=0))
调用fonttable()
时:
问题是,svg设备不知道字体Trebucht MS。请查看软件包
extrafont
。安装它并使用导入所有系统字体
install.packages("extrafont")
library(extrafont)
font_import()
这需要几分钟的时间。之后,将这些行放在您的RMarkdown文档中:
```{r}
library(extrafont)
loadfonts(device = "pdf", quiet = T)
```
只要您的系统上有投石机MS,这就可以了。我不确定您是否需要帮助。然而,我今天遇到了这个问题,我终于找到了一个简单的方法。我把它贴在这里,以备将来有人需要 代码如下:
windowsFonts(myFont = windowsFont("TT Times New Rome"))
line_plot = ggplot(data = total_plot_data, aes(x = hour, y = electricity, group = type, colour = type, linetype = type)) +
geom_line(size = 0.75) +
theme(
text = element_text(family = "myFont", size = 15),
legend.text = element_text(size = 10),
);
只需添加一行作为
windowsFonts(myFont=windowsFont(“TT Times New Rome”))
,然后使用element\u text(family=“myFont”,size=15)
在我的计算机上解决此问题。这里的响应也很晚。无论出于何种原因,pdf和svg似乎在使用这种字体时遇到了一些问题,即使字体加载正确。
如果是一个选项,您可以为矢量化图形设置
dev='cairo\u pdf'
。这也适用于普通的R脚本。谢谢@Martin,我已经加载了extrafont软件包并导入了字体。最后一行,loadfonts,我还没用过。所以我试过了,但似乎没用。我开始认为我应该让所有这些幻灯片,即使它让我恼火的是png工作,而不是svg!当我想起来的时候,我的图表的标题看起来确实像是用投石机作为字体,尽管有警告。如果我不运行主题情节标题部分,我会得到另一种字体。@ErrantBard有趣。不过对我来说很管用。你确定Trebuchet MS在extrafontdb中注册了吗?确实很有趣-有些奇怪,我毫不怀疑它与extrafontdb有关,正如你所说:)请看上图,从我调用fonttable时开始。@Martin Schmelzer:我遇到了类似的问题,但这里和其他地方提出的解决方案都没有这么大的帮助。这是我的问题tionhttps://stackoverflow.com/questions/62067139/warning-in-grid-callc-textbounds-as-graphicsannotxlabel-xx-xy-font-w 非常感谢您的帮助!