ggtern отключает некоторые темы из ggplot2 - все еще? - PullRequest
0 голосов
/ 25 марта 2020

Кажется, у меня та же проблема, что и описанная здесь ранее: при подключении ggtern к ggplot2 я получаю это сообщение:

Следующие объекты маскируются из 'package: ggplot2':

%+%, aes, annotate, calc_element, ggplot, ggplot_build, ggplot_gtable, ggplotGrob,
ggsave, layer_data, theme, theme_bw, theme_classic, theme_dark, theme_gray,
theme_light, theme_linedraw, theme_minimal, theme_void

Решением в 2016 году было обновление до версии 2.1.4 ggtern, однако сейчас я использую версию 3.1.0 для ggtern (и 3.3.0 для ggplot2). Любые идеи о том, что я могу делать не так?

1 Ответ

1 голос
/ 25 марта 2020

Всякий раз, когда у вас есть маскируемый объект, вы всегда можете указать на этот объект квалифицированным вызовом (например, используя ggplot2::theme_bw()).

Чтобы убедиться в этом, загрузите library(ggplot2) и library(ggtern) (в этой последовательности). Как вы указали, эта функция в результате маскируется в ggplot2. Изменения незначительны в случае, который я использую ниже, но это иллюстрирует суть.

Тщательно сравните вывод следующих двух строк кода, и вы увидите разницу (я думаю, что в основном это размер по умолчанию масштаб оси):

Неквалифицированный вызов. Этот код использует theme_bw() из ggtern, поскольку ggplot2::theme_bw() замаскирован:

ggplot2(iris, aes(x=Sepal.Length, y=Sepal.Width)) + 
    geom_point() + theme_bw()

Квалифицированный вызов. Этот код вызывает метод из ggplot2:

ggplot2(iris, aes(x=Sepal.Length, y=Sepal.Width)) + 
    geom_point() + ggplot2::theme_bw()
...