У меня есть два вопроса о построении графика с 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)
(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?
Большое спасибо.
Сначала вы можете изменить имена столбцов, чтобы они распознавали _ как точки разделения:
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