我想有一个导出函数my_theme()
,可以应用于不同的图表类型(ggplot,highcharter,plotly)。我尝试使用S3方法,但有几个问题:
- 我只能弄清楚如何使用管道
|>
和+
操作符来处理ggplot对象 - 我似乎不能在
ggplot2::theme_set()
中使用它,我可能会创建一个单独的use_my_theme()
函数来完成此操作
任何建议将不胜感激:
library(highcharter)
library(ggplot2)
# functions
my_theme <- function(p, ...) {
UseMethod("my_theme", p)
}
my_theme.gg <- function(p, ...) {
p +
theme_dark(...)
}
my_theme.highchart <- function(p, ...) {
p |>
hc_add_theme(hc_theme_darkunica(...))
}
# highcharter
highcharter::highcharts_demo() |>
my_theme()
# ggplot
ggplot2::qplot(mpg, wt, data = mtcars) |>
my_theme() # ^^^ how to make '+' instead?
theme_set(my_theme()) # doesn't work (and future plots will fail)
theme_set(theme_gray()) # revert back
1条答案
按热度按时间bgtovc5b1#
我自己也没有弄明白,但是添加一个
missing()
条件就可以了。如果有ggplot2
和另一个用操作符+
而不是管道|>
构建的绘图库,这个方法就不起作用了。