Правильный способ передать векторизованный ввод в element_text?

Я часто обнаруживаю, что хочу выровнять метки оси X на своих графиках по-разному в зависимости от их местоположения, со значениями слева, выровненными по левому краю, и значениями справа, выровненными по правому краю. Однако element_text не имеет официальной поддержки векторизованного ввода (и никогда не будет?), поэтому мне интересно, как решить эту проблему надлежащим образом ggplot2.

Проблема: перекрывающиеся метки оси X (и обрезанные справа)

library(ggplot2)
v <- data.frame(x=1:2, y=1:2, facet=gl(2, 2))
gp <- ggplot(v) +
  geom_point(aes(x=x, y=y)) +
  scale_x_continuous(breaks = 1:2, labels = c("Minimum", "Maximum")) +
  facet_wrap(~facet)
gp

Мое решение:

gp + theme(axis.text.x = element_text(hjust=c(0, 1)))

Кроме:

Warning message:
Vectorized input to `element_text()` is not officially supported.
ℹ Results may be unexpected or may change in future versions of ggplot2. 

Как правильно по-разному выровнять текст в ggplot, если векторизованный element_text не поддерживается?

Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Клаус Уилке заявляет здесь, что его пакет ggtext действительно поддерживает использование векторов таким образом и продолжит поддерживать его в будущем. Как говорит thomasp85 (Томас Лин Педерсен) в ветке «FWIW, я думаю, что большинство вариантов использования этого хака можно правильно решить с помощью element_markdown()», т.е.

library(ggplot2)
library(ggtext)

v <- data.frame(x=1:2, y=1:2, facet=gl(2, 2))
gp <- ggplot(v) +
  geom_point(aes(x=x, y=y)) +
  scale_x_continuous(breaks = 1:2, labels = c("Minimum", "Maximum")) +
  facet_wrap(~facet)
gp

gp +
  theme(axis.text.x = element_markdown(hjust = c(0, 1)))

Created on 2023-04-11 with reprex v2.0.2

Хм, я надеялся на что-то, что не требует загрузки дополнительной библиотеки. Мне любопытно, как команда ggplot2 видит, как это должно происходить. Это просто плохая идея, потому что метки смещены от галочек? Похоже, это просто техническая проблема, так стоит ли открывать запрос функции на GitHub, даже если они уже знают, что это крайний случай?

Dubukay 12.04.2023 18:31

Отличный момент; Я не думаю, что это плохая идея, просто это не «стандартный» вариант использования. Основываясь на ветке обсуждения на github, код ggtext предназначен для поддержки векторизованных входных данных, а код ggplot2 — нет (и они планируют отказаться от этого «хака» для element_text() в будущем), поэтому, возможно, стоит опубликовать запрос функции и посмотреть то, что они говорят.

jared_mamrot 13.04.2023 02:18

После еще нескольких поисков, похоже, что проблемы, которые у меня были, уже поднимались и считались не стоящими реализации - эта проблема говорит в основном то же самое, что и я, и «официальный» ответ, похоже, таков, что это не собирается произойдет, и нам просто нужно держать пальцы скрещенными, чтобы ggtext не исчезло. Спасибо за вашу помощь!

Dubukay 13.04.2023 19:18

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