#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 немного короче, но я снова кое-что узнал — спасибо.