Различные единицы шкалы для разных графиков с GGally ggpairs R
С помощью iris
набор данных для примера здесь, у меня есть следующая сетка графиков из ggpairs()
:
library(GGally)
ggpairs(iris)
Я хотел бы немного очистить этот график, в частности, с некоторым форматированием по осям. Я хотел бы выделить заголовки жирным шрифтом (Sepal.Length, Sepal.Width и т. Д.), И, что более важно, я хотел бы отформатировать единицы измерения по осям.
Однако для каждого столбца / строки я хотел бы использовать разное форматирование единиц измерения. (даже если это не процентная статистика), для столбца / строки Sepal.Width я бы хотел, чтобы единицы были процентами. С обычным ggplot() с непрерывной переменной я бы сделалscale_x_continuous(labels = scales::percent_format())
, однако я не совсем уверен, как выборочно применять форматирование единиц измерения к различным строкам / столбцам вывода ggpairs().
Любая помощь с этим приветствуется, спасибо!
1 ответ
Есть несколько способов продолжить; вот два.
Вы можете изменить определенные графики, используя механизм подмножества:
library(GGally)
p = ggpairs(iris)
p[2,1] = p[2,1] + scale_y_continuous(labels = scales::percent_format())
или вы можете написать функцию для перехода к ggpairs
где вы можете указать форматы в зависимости от переменной. Глупый пример форматирования оси Y:
# acc_y is a named vector giving the parameters to be passed to
# the accuracy argument of scales::percent_format
quick_fun <- function(data, mapping, acc_y, ...){
y_name = quo_name(mapping$y)
ggplot(data=data, mapping=mapping) +
geom_point() +
scale_y_continuous(labels = scales::percent_format(accuracy = acc_y[y_name]))
}
ggpairs(iris, lower=list(continuous=wrap(quick_fun,
acc_y=c("Sepal.Length"=0.1, "Sepal.Width"=0.1,
"Petal.Length"=10, "Petal.Width"=1000))))
Также обратите внимание, что ggplot
темы также работают с матрицей сюжета, поэтому вы можете форматировать текст полосы
p + theme(strip.text = element_text(face="bold", colour="red", size=20))