Изменить не отображенный цвет геометрии на данном графике

#r #ggplot2

#r #ggplot2

Вопрос:

Предположим, у меня есть функция, которая не находится под моим контролем, которая возвращает ggplot объект, цвет которого geom не отображается, а присваивается напрямую:

 library(ggplot2)
notMyOwnFunction <- function(...) {
    qplot(mpg, disp, data = mtcars, color = I("darkblue"))
}
  

Как я могу изменить цвет, не переписывая всю функцию и заменяя константу I("darkblue") параметром?

Ответ №1:

Вы можете просто изменить буквальное значение:

 library(ggplot2)
gg <- qplot(mpg, disp, data = mtcars, color = I("darkblue"))

# value starts as 'darkblue'    
gg$layers[[1]]$aes_params$colour <- 'red'
  

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

Комментарии:

1. Именно то, что я искал без необходимости разложения всего объекта. Спасибо!

Ответ №2:

Вы можете изменять данные напрямую, используя ggplot_build и ggplot_gtable функции для перевода.

 p <- notMyOwnFunction()
build <- ggplot_build(p)
build$data[[1]]$colour <- 'purple'
p_new <- ggplot_gtable(build)
plot(p_new)
  

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

Комментарии:

1. Спасибо за решение — решение arvi немного короче, но я снова кое-что узнал — спасибо.