Как вы меняете метки осей в списке ggplots? - PullRequest
4 голосов
/ 05 апреля 2011

Я создаю список ggplots для создания анимации.Я хочу выделить метку на оси абсцисс, и положение этой подсветки меняется в разных кадрах анимации.

Вот пример графика.Метка первой оси должна быть выделена в первом кадре, а вторая - во втором.

p <- ggplot(mtcars, aes(factor(cyl), mpg)) + 
  geom_boxplot() 
p_list <- list()

for(i in 1:2)  
{
  x_label_cols <- rep("grey50", 3)
  x_label_cols[i] <- "red"
  p_list[[i]] <- p + 
    opts(
      axis.text.x = theme_text(
        colour = x_label_cols
      )
    )
}

К сожалению, кажется, что x_label_cols оценивается при печати графика, а не при его создании, поэтомув обоих кадрах выделена вторая метка.Таким образом, print(p_list[[1]]) отображается неправильно.

Как получить разные цвета меток оси для каждого графика в списке?

1 Ответ

4 голосов
/ 05 апреля 2011

Почему бы не настроить параметры в пределах saveGIF()? Насколько я знаю, opts() работает так же, как options(), но тогда специально для ggplot2. Таким образом, в вашем коде вы устанавливаете параметры дважды, но печатаете графики только после последнего изменения параметров. Следовательно, вы должны включить изменение параметров в код запуска в saveGIF().

Этот код делает это для меня:

p <- ggplot(mtcars, aes(factor(cyl), mpg)) +
  geom_boxplot()

saveGIF(
  sapply(1:2,function(x){
      x_label_cols <- rep("grey50", 3)
      x_label_cols[x] <- "red"
      print(p + 
        opts(axis.text.x = theme_text(colour = x_label_cols))
      )
  })
)

Дает:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...