R 在拼图和ggplot2中计算边距时忽略轴标签
我正在尝试使用ggplot2和补丁创建散点图矩阵 我的功能是R 在拼图和ggplot2中计算边距时忽略轴标签,r,ggplot2,patchwork,R,Ggplot2,Patchwork,我正在尝试使用ggplot2和补丁创建散点图矩阵 我的功能是 library(tidyverse) library(patchwork) library(grid) ggscatter <- function(df, ...) { plots <- df %>% mutate( across(.fns = as.character), .id = 1:n(), ) %>% pivot_longer(-.id, name
library(tidyverse)
library(patchwork)
library(grid)
ggscatter <- function(df, ...) {
plots <- df %>%
mutate(
across(.fns = as.character),
.id = 1:n(),
) %>%
pivot_longer(-.id, names_to = ".var", values_to = ".val") %>%
full_join(., ., by = ".id") %>%
nest(data = -c(.var.x, .var.y)) %>%
mutate(
data = pmap(., function(data, .var.x, .var.y) {
data %>%
mutate(
.val.x = switch(class(df[[.var.x]]),
"factor" = factor(.val.x),
"numeric" = as.numeric(.val.x),
"character" = .val.x
),
.val.y = switch(class(df[[.var.y]]),
"factor" = factor(.val.y),
"numeric" = as.numeric(.val.y),
"character" = .val.y
)
)
})
) %>%
mutate(
plot = pmap(., function(data, .var.x, .var.y) {
if(.var.x == .var.y) {
p <- grid::textGrob(.var.x, gp = gpar(fontsize = 15))
} else {
p <- data %>%
ggplot(aes(x = .val.x, y = .val.y)) +
geom_point(
position = position_jitter(
width = {if(class(data$.val.x) == "factor") .2 else 0},
height = {if(class(data$.val.y) == "factor") .2 else 0}
)
) +
labs(
x = .var.x,
y = .var.y
) +
theme(
axis.title = element_blank(),
axis.text.x = {if(.var.y == names(df)[length(df)] || (.var.x == names(df)[length(df)] & .var.y == names(df)[length(df) -1])) element_text() else element_blank()},
axis.text.y = {if(.var.x == names(df)[1] || (.var.y == names(df)[1] & .var.x == names(df)[2])) element_text() else element_blank()},
axis.ticks.x = {if(.var.y == names(df)[length(df)] || (.var.x == names(df)[length(df)] & .var.y == names(df)[length(df) -1])) element_line() else element_blank()},
axis.ticks.y = {if(.var.x == names(df)[1] || (.var.y == names(df)[1] & .var.x == names(df)[2])) element_line() else element_blank()},
plot.margin = margin(0, 0, 0, 0)
)
}
p
})
)
wrap_plots(plots$plot,
guides = "collect",
byrow = FALSE
)
}
ggscatter(iris)
库(tidyverse)
图书馆(拼凑)
图书馆(网格)
GG散射%
pivot_longer(-.id,names_to=“.var”,values_to=“.val”)%>%
完全联接(,,by=“.id”)%>%
嵌套(数据=-c(.var.x,.var.y))%>%
变异(
数据=pmap(、函数(数据、.var.x、.var.y){
数据%>%
变异(
.val.x=开关(类(df[.var.x]]),
“系数”=系数(.val.x),
“数值”=作为.numeric(.val.x),
“字符”=.val.x
),
.val.y=开关(类(df[.var.y]]),
“系数”=系数(.val.y),
“数值”=作为.numeric(.val.y),
“字符”=.val.y
)
)
})
) %>%
变异(
绘图=pmap(、函数(数据、.var.x、.var.y){
如果(.var.x==.var.y){
P