R 将ggplot对象转换为svg,该svg使用开放式Sans半黑体字体
我想创建一个R 将ggplot对象转换为svg,该svg使用开放式Sans半黑体字体,r,svg,ggplot2,r-markdown,R,Svg,Ggplot2,R Markdown,我想创建一个ggplot绘图,它使用Open Sans Semibold字体,然后我想将此绘图转换为svg。最后将其包含在r标记doc中。最大的问题是在浏览器上转换的ggplot对象上使用Open SAN Semibold。 我使用svglite将ggplot转换为svg,效果很好 我在axis的标题中包括了OpenSans半黑体字体(我在本地存储了所有OpenSans系列) 我创建了rmarkdowndoc --- title: "" output: html_document --- ``
ggplot
绘图,它使用Open Sans Semibold字体,然后我想将此绘图转换为svg
。最后将其包含在r标记doc中。最大的问题是在浏览器上转换的ggplot
对象上使用Open SAN Semibold。
我使用svglite
将ggplot
转换为svg
,效果很好
我在axis的标题中包括了OpenSans半黑体字体(我在本地存储了所有OpenSans系列)
我创建了rmarkdown
doc
---
title: ""
output: html_document
---
```{r setup, include = FALSE}
library(svglite)
knitr::opts_chunk$set(
dev = "svglite",
fig.ext = ".svg"
)
```
```{r, warning = F, message = F, echo = F}
library(ggplot2)
data(cars)
ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) +
geom_point() +
theme(text = element_text(family = 'Open Sans'),
axis.title = element_text(family = 'Open Sans Semibold'))
```
当我在Chrome/Opera/Mozilla浏览器中打开此文档时,打开的SAN Semibold不会显示。相反,Arial取代了它。然而,在Safari中,它工作得非常完美。
事实证明(更多信息)那些使用开放式Sans半黑体和Light的浏览器存在一个典型的问题。为了解决这个问题,我使用cssfont-weight
和基本的“开放式Sans”、Sans-serif
。当我创建一个
时,它可以完美地工作
---
title: ""
output: html_document
---
<style>
@import url(https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700);
.text_basic {
font-family: 'Open Sans', sans-serif;
}
.text_semibold {
font-family: 'Open Sans', sans-serif;
font-weight: 700;
}
</style>
<p class = 'text_basic'>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellat, nisi quasi cupiditate, ratione, consequuntur adipisci reiciendis impedit, laborum tenetur qui neque nobis enim. Sunt
</p>
<p class = 'text_semibold'>
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Repellat, nisi quasi cupiditate, ratione, consequuntur adipisci reiciendis impedit, laborum tenetur qui neque nobis enim. Sunt
</p>
```{r setup, include = FALSE}
library(svglite)
knitr::opts_chunk$set(
dev = "svglite",
fig.ext = ".svg"
)
```
```{r, warning = F, message = F, echo = F}
library(ggplot2)
data(cars)
ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) +
geom_point() +
theme(text = element_text(family = 'Open Sans'),
axis.title = element_text(family = 'Open Sans Semibold'))
```
在这种情况下,可以检测文本
标记,并根据需要对其进行操作,但生成的代码是扁平的,即不容易区分与标签和标题相关的文本
标记
那么,有人有办法解决这个问题吗
感谢所有读过最后一句话的人。我试图尽可能简短地总结我的问题。您的两种解决方法似乎都是直截了当的方法,为了使它们与绘图一起工作,您可以使用gsub
直接修改HTML并设置文本样式属性的font-weight
:
s <- svgstring()
ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) +
geom_point() +
theme(text = element_text(family = 'Open Sans'),
axis.title = element_text(family = 'Open Sans Semibold'))
gsub("font-family: Open Sans Semibold;",
"font-family: Open Sans;font-weight: 700;",
htmltools::HTML(s()))
s
s <- svgstring()
ggplot(mtcars, aes(mpg, qsec, color = factor(cyl))) +
geom_point() +
theme(text = element_text(family = 'Open Sans'),
axis.title = element_text(family = 'Open Sans Semibold'))
gsub("font-family: Open Sans Semibold;",
"font-family: Open Sans;font-weight: 700;",
htmltools::HTML(s()))