Как отбить текст в одной панели facet_wrap?

У меня возникли проблемы с поиском способа отклонить текстовые метки в одной фасетной сетке «Гора» (вверху в центре). Все остальные метки штатов достаточно четкие, чтобы их можно было различить, но я не могу понять, как перемещать метки штатов в «Горе», не затрагивая другие сетки.

Я пробовал использовать:

geom_text_repel(force = x)

Но я не знаю ни одного, чтобы заставить код воздействовать только на одну сетку. Ниже мой код вместе с выводом. Мой желаемый результат состоит в том, чтобы штаты в сетке «Гора» выглядели так же, как в «Западном Северо-Центральном» или что-то, что можно легко прочитать.

Еще одна вещь, которую я не совсем понял, это мои метки оси x. Я включил годовой диапазон с 2010 по 2018 год, чтобы оставить место для меток штатов, но я хочу, чтобы ось показывала только 2010–2017 годы.

Код/вывод:

p2 + xlim(breaks = seq(2010,2017, by = 1))
Error in limits.numeric(c(...), "x") : length(lims) == 2 is not TRUE

Какие-либо предложения?

p <- ggplot(plotflow, aes(x = YEAR, y = Y, group = STATE)) + 
  theme_bw() + 
  theme(panel.grid.major = element_blank()) + 
  theme(panel.grid.minor = element_blank()) + 
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))
p0 <- p + geom_point(color = "gray70")
p1 <- p0 + geom_smooth(mapping = aes(group = STATE), 
                       se = F, color = "gray10")
p2 <- p1 + geom_text_repel(data = subset(dataplot, YEAR == max(YEAR)),
                           mapping = aes(x = YEAR, y = Y, label = ALPHA_CODE),
                           size = 3.6, segment.color = NA, nudge_x = 40) + coord_cartesian(c(min(dataplot$YEAR), 2018))
p2 + labs(x = "Year") + 
  facet_wrap(CENSUS_DIVISION ~ ., nrow  = 3)

введите здесь описание изображения


person James R.    schedule 23.03.2020    source источник


Ответы (1)


Для вашего первого вопроса о применении geom_text_repel() к одному конкретному аспекту вы можете использовать решение, подобное опубликованному здесь. В вашем случае ваш вызов geom_text_repel() может выглядеть примерно так (сам попробовать не могу, так как ваших данных у меня нет):

p2 <- p1 + geom_text_repel(
   data = subset(dataplot, YEAR == max(YEAR)),
   mapping = aes(x = YEAR, y = Y, label = ALPHA_CODE, CENSUS_DIVISION = "MOUNTAIN"),
   size = 3.6, segment.color = NA, nudge_x = 40) + 
   coord_cartesian(c(min(dataplot$YEAR), 2018))

Идея состоит в том, чтобы применить к определенной эстетике картографирования, связанной с аспектами, которые вы хотите применить к этой геометрии.

Что касается маркировки оси x, я бы посоветовал вам задать это в отдельном вопросе. Ваши данные отформатированы как «Дата» или как «числовой»? Если это число, то xlim(2010,2017) должно быть все, что вам нужно.

person chemdork123    schedule 23.03.2020