Изменить метки фасетов для ggplot, созданного ggfortify::autoplot
Я пытаюсь изменить метки фасетов для stl
Участок разложения выглядит следующим образом:
library(ggplot2)
library(ggfortify)
p <- autoplot(stl(AirPassengers, s.window = 'periodic'), ts.colour = "black", ts.size = 0.2)
p
Сюжет происходит из пакета ggfortify. Я хочу изменить метки фасетов на:
c("Original Data", "Seasonal component", "Trend component", "Remainder")
Я пытался войти в структуру ggplot
(много str
'ing) и обнаружил, что следующие имена хранят следующие имена:
str(p$layers[[1]]$data$variable)
# Factor w/ 4 levels "Data","seasonal",..: 1 1 1
Тем не менее, когда я изменяю этот фактор на месте. Я получаю четыре пустых участка, за которыми следуют правильные участки:
p$layers[[1]]$data$variable <- factor(p$layers[[1]]$data$variable,
labels=c("Original series", "Seasonal Component", "Trend component", "Remainder"))
Как изменить метки фасетов, не получая эти пустые графики сверху?
1 ответ
Решение
Одной из возможностей является изменение соответствующих компонентов объекта графика.
# generate plot data which can be rendered
g <- ggplot_build(p)
# inspect the object and find the relevant element to be changed
# str(g)
# perform desired changes
g$panel$layout$variable <- c("Original Data", "Seasonal component", "Trend component", "Remainder")
# build a grob and 'draw' it
grid.draw(ggplot_gtable(g))