Как отразить текст в одной панели facet_wrap? - PullRequest
1 голос
/ 23 марта 2020

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

Я пытался использовать :

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)

enter image description here

1 Ответ

2 голосов
/ 23 марта 2020

Для вашего первого вопроса о применении 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))

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

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

...