在ggplot2中定义辅助轴时遇到一些问题。 特别是,如果不引用数据,就无法定义要应用于轴的转换。
代码在这里:
mtcars %>%
ggplot()+
geom_line(aes(x=mpg, y=wt), col="red")+
geom_line(aes(x=mpg, y=disp*( max(wt) / max(disp) ) ), col="blue" )+
scale_y_continuous(sec.axis = sec_axis(~./(max(wt) / max(disp)), name="disp"))
我得到了错误:
Error in rlang::eval_tidy(rlang::f_rhs(self$trans), data = range, env = rlang::f_env(self$trans)) :
object 'wt' not found
定义sec.axis = sec_axis(~./(max(wt) / max(disp))
时,变量wt
和disp
包含在mtcars
数据集中。为什么返回错误?
我可以这样做
... sec_axis(~./(max(mtcars$wt) / max(mtcars$disp)) ...
但是我想应用这些转换而不每次都引用数据集。 这是因为在绘制数据之前,我想应用一些转换,例如
my_df %>% groupby(...) %>% summarize(...) %>% mutate(...) %>% ggplot(...)
以这种方式绘制数据时,我无法引用现有表,因为该表不会退出,但仅出于绘制目的而创建它。
有人可以帮忙吗? 谢谢