Как создать график svg с полужирным шрифтом в R ggpot2?
Я пытаюсь создать граф, содержащий полужирные метки, используя ggplot2. Проблема в том, что любой текст ggplot2 имеет только 4 типа начертания: обычный, полужирный, курсив, полужирный курсив. Так что полужирного здесь нет. Встроенный драйвер записи svg, используемый ggplot2, может обрабатывать шрифты, зарегистрированные с определенным весом. В моем случае это «Джорджия Про Полуболд». НО сохранение такого графика работает только через UI в RStudio и не работает через ggsave. Возникает вопрос: как решить эту проблему с ggsave?
Подготовка данных:
library(ggplot2)
library(Cairo)
library(c)
library(extrafont)
library(svglite)
extrafont::loadfonts(device="win")
setwd("path")
p_2016 <- data.frame(read.csv("E3005.20211208T011244.csv"))
p_2016_state = dplyr::filter(p_2016, Towns.by.Size == "State", Sex != "Both sexes", Age.Group!="All ages")
p_2016_state$VALUE <- ifelse(p_2016_state$Sex == "Male", -1*p_2016_state$VALUE, p_2016_state$VALUE)
p_2016_state$PERCENT = p_2016_state$VALUE/sum(p_2016_state$VALUE)*100
p_2016_rural = dplyr::filter(p_2016, Towns.by.Size == "Remainder of country", Sex != "Both sexes", Age.Group!="All ages")
Сюжет:
g <- ggplot(p_2016_state, aes(x=Age.Group, y=VALUE, label=abs(VALUE), fill=Sex)) +
geom_col() +
scale_y_continuous(labels = paste0(as.character(c(seq(2, 0, -1), seq(1, 2, 1))), "m")) +
ggtitle("Age and Sex Distribution") + ylab("Percent of population") + xlab("Age Group") +
geom_text(family="Bahnschrift", size = 8/.pt) +
theme_bw() + theme(legend.position = "none") +
# important code is only here:
theme(plot.title = element_text(hjust = 0.5), text = element_text(family = 'Georgia Pro Semibold')) +
coord_flip()
g
Изображение, полученное из стандартной вкладки «графики» в RStudio с помощью кнопки «Экспорт» (сохранено в svg, прикреплено как png)
Но потом
ggsave("pyramid.svg", g, device="svg", width=175.438, height=103.475, units="mm", dpi=600)
Заменяет полужирный шрифт Georgia Pro на Arial. Он работает нормально с Georgia Pro, но не с Georgia Pro Semibold
Похоже, что библиотека svglite, которая используется в ggsave, так как устройство не может обрабатывать некоторые типы шрифтов. Есть ли способы исправить?
UPD: драйвер ggsave png с этим справляется отлично. Но мне нужен svg для моей цели
ссылка на данные: https://data.cso.ie/table/E3005 Но, очевидно, может быть воспроизведена даже с одной меткой в пустом графике.