Ich möchte ein ggplot
Grundstück, das Open Sans Semibold Schriftart verwenden, und dann möchte ich dieses Diagramm in svg
konvertieren. Schließlich schließen Sie das in Doc. Das größte Problem ist Open Sans Semibold auf dem konvertierten ggplot
Objekt im Browser zu verwenden.Convert ggplot Objekt in Svg, die Open Sans Semibold Schriftart
- benutzte ich
svglite
ggplot
insvg
zu konvertieren und es funktioniert gut. - Ich habe Open Sans Semibold Schriftart in Titeln der Achse (Ich habe alle Open Sans-Familie lokal gespeichert).
Ich erstellte 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')) ```
Beim Öffnen dieses Dokuments in dem Chrome/Opera/Mozilla-Browser, wird die Open Sans Semibold nicht auf. Stattdessen ersetzt Arial es. In Safari funktioniert es jedoch einwandfrei. Es stellte sich heraus (mehr Info here), dass es ein typisches Problem bei diesen Browsern mit Open Sans Semibold und Light gibt. Um es zu lösen, anstatt Semi-Version zu verwenden, verwende ich css font-weight
mit grundlegenden 'Open Sans', sans-serif
. Und es funktioniert perfekt, wenn ich eine <p>
erstellen.
---
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'))
```
Doch diese Lösung funktioniert nicht auf ggplot
Objekt, weil es immer noch Open Sans Semibold Schriftart verwenden. In ggplot
ist es nicht möglich, font-weight
zu verwenden, weil es so etwas nicht gibt. Stattdessen können Sie nur das Argument face
verwenden, aber diese Option akzeptiert keine numeric
Werte.
Eine Problemumgehung, von der ich anfangs überzeugt bin, dass sie funktionieren könnte, besteht darin, das Objekt ggplot
in HTML-Code umzuwandeln und dann css
zu verwenden, um die Schriftarten auf der Achse zu bearbeiten.
---
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)
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'))
htmltools::HTML(s())
invisible(
dev.off()
)
```
In diesem Fall ist es möglich, text
Tags zu erfassen und zu manipulieren, wie ich will, aber generierte Code ist flach heißt es nicht einfach ist text
Tags zu den Etiketten und den Titel differatiate.
Also, hat jemand Idee, dieses Problem zu lösen?
Danke an alle, die diesen letzten Satz gelesen haben. Ich habe versucht, mein Problem so kurz wie möglich zusammenzufassen.