2013-11-16 2 views
1

мне нужно создать новую тему элемент для ggplot2ggplot2 Создать новую тему элемент вне .elements_tree

Как я могу добавить НОВЫЙ элемент в структуре .elements_tree данных (для справки, он начинается в строке 263 HERE)

к примеру, у меня есть конкретная ситуация, когда мне нужно добавить еще одну ось, так, я хочу, чтобы добавить тему объектов: axis.text.z, axis.title.z и т.д ...

я могу добавить его вручную индивидууму сюжетный объект (скажем 'p lot '), взломав на plot$theme, однако, когда я пытаюсь изменить с помощью команды theme(...), он получает неаудированную функцию validate_element, которая начинается с строки 363, также в том же исходном файле (HERE).

Если я создать локальную копию .elements_tree, через что-то вроде:

.elements_tree = ggplot2:::.elements_tree 
.elements_tree = c(.elements_tree, 
        axis.text.z = el_def("element_text", "axis.text"), 
        axis.title.z = el_def("element_text", "axis.text")) 

Затем новая копия не получает подобран экземпляра ggplot2 библиотеки, и, следовательно, ничего не достигается.

ответ

2

НТН:

et <- ggplot2:::.element_tree 
et <- c(.element_tree, 
     axis.text.z = ggplot2:::el_def("element_text", "axis.text"), 
     axis.title.z = ggplot2:::el_def("element_text", "axis.text")) 

unlockBinding(".element_tree", asNamespace("ggplot2")) 
assign(".element_tree", et, asNamespace("ggplot2")) 
lockBinding(".element_tree", asNamespace("ggplot2")) 
+0

не получает подобран ggplot2. try: 'theme (axis.title.z = element_blank())' –

+0

Ваше решение работает (т.е. разблокировка, привязка блокировки), в записях отсутствовали имена, т. е. они должны быть добавлены как 'et $ axis.text.z = ggplot2 ::: el_def ("element_text", "axis.text") ' –

Смежные вопросы