У меня есть серия графиков качества воды, каждый из которых сделан отдельно с использованием цикла for, а затем добавлен вместе с помощью plot_grid() в cowplot.
Метки по оси Y занимают много места, и я пытаюсь сделать их менее сложными. Я хотел бы, чтобы заголовок главной оси, например, температура, был шрифтом большего размера, чем единицы измерения, например (oC). В настоящее время все метки находятся в списке, на который ссылается цикл for. например axis labels <- list('Temp' = c('Temperature','(\u00B0C)'))
У меня есть единицы и температура как отдельные элементы в списке. Есть ли способ сделать это как часть метки y? Это то, что я сейчас использую, но добавляю только одну часть с полной меткой:
labs(x= 'Sampling Site', y= axisLabels[[category]][1])
И выдает что-то вроде этого (без цельсия):
Когда я устанавливаю семейство шрифтов Calibri, пробелы становятся довольно большими. Есть ли способ изменить это?
axisLabels <- lapply(axisLabels, function(x) {
x[[1]] <- paste0("<span style='font-size: 13pt; font-family: Calibri'>", x[[1]])
x[[2]] <- paste0("<span style='font-size: 10pt;font-family: Calibri'>", x[[2]], "</span>")
return(x)
})
С приведенным выше кодом v ранее без него
Одним из вариантов может быть пакет ggtext
, который через элемент темы ggtext::element_markdown
позволяет использовать немного HTML и CSS для стилизации текста оси. В приведенном ниже примере я заключаю единицы ваших текстовых меток в тег <span>
, для которого я установил размер шрифта 8pt. Примечание. Поскольку мы сейчас находимся в мире HTML, мы должны использовать тег <br>
, чтобы добавить разрыв строки:
library(ggplot2)
library(ggtext)
axisLabels <- list("Temp" = c("Temperature", "(\u00B0C)"))
# Set font size for units to 6pt
axisLabels <- lapply(axisLabels, function(x) {
x[[2]] <- paste0("<span style='font-size: 8pt'>", x[[2]], "</span>")
return(x)
})
category <- "Temp"
ggplot(mtcars, aes(hp, mpg)) +
geom_point() +
theme_bw() +
labs(x = "Sampling Site", y = paste(axisLabels[[category]], collapse = "<br>")) +
theme(axis.title.y = ggtext::element_markdown())
Вы можете установить семейство шрифтов с помощью атрибута CSS font-family
, например. использование paste0("<span style='font-size: 8pt; font-family: mono'>", x[[2]], "</span>")
в примере кода установит семейство шрифтов для единиц измерения на моноширинный шрифт по умолчанию.
Я установил его на Калибри. Любая идея, почему пространства становятся больше. Смотрите мои обновления для некоторых скриншотов.
К сожалению нет. Я только что проверил свой пример кода и ваш фрагмент кода, и он отлично работает для меня.
Привет спасибо. Мне просто интересно, как бы вы добавили тип шрифта в этот код?