Ggpairs в r: как (1) настроить значения оси и (2) разделить длинные имена переменных на две (или более строки)

У меня есть два вопроса о построении графика с ggpairs в r:

(1) У меня есть некоторые неизбежно длинные имена переменных, которые не отображаются полностью в выводе ggpairs по умолчанию. Как я могу настроить ggpairs так, чтобы было видно все имя (например, можно ли метки разделять на несколько строк или отображать под углом 45 градусов и т. д.)?

и (2), как установить пользовательский диапазон пределов осей для отдельных переменных?

Например, следующий код дает нам график ниже:

library(GGally)

set.seed(99)

really_long_variable_name_1 <- round(runif (50, 0, 1), 2)
really_long_variable_name_2 <- round(runif (50, 0, 0.8), 2)
really_long_variable_name_3 <- round(runif (50, 0, 0.6), 2)
really_long_variable_name_4 <- round(runif (50, 0, 100), 2)

df <- data.frame(really_long_variable_name_1, 
                    really_long_variable_name_2,
                    really_long_variable_name_3,
                    really_long_variable_name_4)

ggpairs(df) 

Ggpairs в r: как (1) настроить значения оси и (2) разделить длинные имена переменных на две (или более строки)

(1) Как настроить график так, чтобы были видны полные имена переменных (в данном случае метки на оси Y)?

и (2) Как установить пределы осей от 0 до 1 для первых трех переменных и от 0 до 100 для четвертой?

Я могу установить для всех пределов осей одинаковые значения, используя функцию, подобную приведенной ниже:

custom_range <- function(data, mapping, ...) { 
  ggplot(data = data, mapping = mapping, ...) + 
    geom_point(...) + 
    scale_x_continuous(limits = c(0, 1)) +
    scale_y_continuous(limits = c(0, 1)) 
}

ggpairs(df, 
        lower = list(continuous = custom_range))

но как мне установить пределы оси для четвертой переменной, really_long_variable_name_4, чтобы X колебался от 0 до 100?

Большое спасибо.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 151
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Сначала вы можете изменить имена столбцов, чтобы они распознавали _ как точки разделения:

cleanname = function(x,lab = "\n"){
  sapply(x, function(c){ 
    paste(unlist(strsplit(as.character(c) , split = "_")),collapse=lab)
  })
  }

colnames(df) = cleanname(colnames(df))

#Using your function
custom_range <- function(data, mapping, ...) { 
  ggplot(data = data, mapping = mapping, ...) + 
    geom_point(...) + 
    scale_x_continuous(limits = c(0, 1)) +
    scale_y_continuous(limits = c(0, 1)) 
}

Добавьте элемент темы, чтобы указать, хотите ли вы текст под углом, размером, цветом и т. д. Обратите внимание, что это просто изменение ваших имен X, но имена Y также имеют новые строки в каждом _

myplot = ggpairs(df,
        lower = list(continuous = custom_range)) +
 theme(strip.text.x = element_text(size = 6, angle = 45)) 

Затем проиндексируйте каждый график и перезапишите существующую шкалу. Я уверен, что есть более чистый способ кодирования этого

myplot[4,1]= myplot[4,1] + scale_y_continuous(limits  = c(0,100))
myplot[4,2]= myplot[4,2] + scale_y_continuous(limits  = c(0,100))
myplot[4,3]= myplot[4,3] + scale_y_continuous(limits  = c(0,100))


myplot

Другие вопросы по теме