Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在拼图和ggplot2中计算边距时忽略轴标签_R_Ggplot2_Patchwork - Fatal编程技术网

R 在拼图和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

我正在尝试使用ggplot2和补丁创建散点图矩阵

我的功能是

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