Ggplot2 Два разных размера шрифта по оси Y

У меня есть серия графиков качества воды, каждый из которых сделан отдельно с использованием цикла 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 ранее без него

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Одним из вариантов может быть пакет 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())

Привет спасибо. Мне просто интересно, как бы вы добавили тип шрифта в этот код?

Melanie Baker 22.11.2022 17:03

Вы можете установить семейство шрифтов с помощью атрибута CSS font-family, например. использование paste0("<span style='font-size: 8pt; font-family: mono'>", x[[2]], "</span>") в примере кода установит семейство шрифтов для единиц измерения на моноширинный шрифт по умолчанию.

stefan 22.11.2022 17:07

Я установил его на Калибри. Любая идея, почему пространства становятся больше. Смотрите мои обновления для некоторых скриншотов.

Melanie Baker 22.11.2022 17:19

К сожалению нет. Я только что проверил свой пример кода и ваш фрагмент кода, и он отлично работает для меня.

stefan 22.11.2022 17:23

Другие вопросы по теме