R ggplot2在.elements\u树之外创建新的主题元素

R ggplot2在.elements\u树之外创建新的主题元素,r,ggplot2,themes,R,Ggplot2,Themes,我需要为ggplot2创建一个新的主题元素 如何向.elements\u树数据结构中添加一个新的项(作为参考,它从第263行开始) 例如,我有一个特殊的情况,我需要添加另一个轴,所以我想添加主题对象:axis.text.z,axis.title.z等等 我可以通过侵入plot$theme手动将其添加到单个plot对象(比如“plot”),但是,当我尝试通过theme(…)命令进行修改时,它会通过validate\u元素函数(从第363行开始)得到未验证,同样在同一源文件上(再次) 如果我通过以下

我需要为ggplot2创建一个新的主题元素

如何向
.elements\u树
数据结构中添加一个新的项(作为参考,它从第263行开始)

例如,我有一个特殊的情况,我需要添加另一个轴,所以我想添加主题对象:
axis.text.z
axis.title.z
等等

我可以通过侵入
plot$theme
手动将其添加到单个plot对象(比如“plot”),但是,当我尝试通过
theme(…)
命令进行修改时,它会通过
validate\u元素
函数(从第363行开始)得到未验证,同样在同一源文件上(再次)

如果我通过以下方式创建
.elements\u 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库实例拾取,因此不会获得任何结果。

HTH:

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"))

et不会被ggplot2拾取。尝试:“theme(axis.title.z=element_blank())”您的解决方案有效(即解锁、锁定绑定),条目缺少名称,即,它们应该像
et$axis.text.z=ggplot2:::el_def(“element_text”,“axis.text”)