Различные единицы измерения масштаба для разных графиков с помощью gGpairs R's GGally - PullRequest
1 голос
/ 08 октября 2019

Используя iris набор данных для примера здесь, у меня есть следующая сетка графиков от ggpairs():

library(GGally)
ggpairs(iris)

enter image description here ...

Я бы хотел немного очистить этот график, в частности, с некоторым форматированием по осям. Я хотел бы выделить заголовки (Sepal.Length, Sepal.Width и т. Д.) И, что более важно, я хотел бы отформатировать единицы измерения по осям.

Однако для каждого столбца / строки я хотел бы использовать различные единицы форматирования. (хотя это не основанный на процентах показатель), для столбца / строки Sepal.Width я бы хотел, чтобы единицы были в процентах. С обычным ggplot () с непрерывной переменной я бы сделал scale_x_continuous(labels = scales::percent_format()), однако я не совсем уверен, как выборочно применять форматирование единиц к различным строкам / столбцам вывода ggpairs ().

Любойпомощь в этом очень ценится, спасибо!

1 Ответ

1 голос
/ 09 октября 2019

Есть несколько способов продолжить;Вот два.

Вы можете изменить определенные графики, используя механизм поднабора:

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