เป็นไปได้ไหมที่จะพล็อตเมทริกซ์ของการกระจายggplot2โดยใช้ggplotคุณสมบัติที่ดีเช่นการจับคู่ปัจจัยเพิ่มเติมกับสีรูปร่าง ฯลฯ และเพิ่มความเรียบเนียนขึ้น?
ฉันคิดเกี่ยวกับบางสิ่งบางอย่างที่คล้ายกับฟังก์ชั่นbasepairs
เป็นไปได้ไหมที่จะพล็อตเมทริกซ์ของการกระจายggplot2โดยใช้ggplotคุณสมบัติที่ดีเช่นการจับคู่ปัจจัยเพิ่มเติมกับสีรูปร่าง ฯลฯ และเพิ่มความเรียบเนียนขึ้น?
ฉันคิดเกี่ยวกับบางสิ่งบางอย่างที่คล้ายกับฟังก์ชั่นbasepairs
คำตอบ:
คุณอาจต้องการลอง plotmatrix:
  library(ggplot2)
  data(mtcars)
  plotmatrix(mtcars[,1:3])สำหรับฉัน mpg (คอลัมน์แรกใน mtcars) ไม่ควรเป็นปัจจัย ฉันไม่ได้ตรวจสอบ แต่ไม่มีเหตุผลว่าทำไมจึงควรเป็นอย่างนั้น อย่างไรก็ตามฉันได้พล็อตกระจาย :)
หมายเหตุ:สำหรับการอ้างอิงในอนาคตplotmatrix()ฟังก์ชันนี้จะถูกแทนที่ด้วยggpairs()ฟังก์ชันจากGGallyแพ็กเกจตามที่ @ naught101 แนะนำในคำตอบอื่นด้านล่างสำหรับคำถามนี้
plotmatrix()ฟังก์ชันนี้จะถูกแทนที่ด้วยggpairs()ฟังก์ชันจากGGallyแพ็กเกจตามที่ @ naught101 แนะนำในการตอบคำถามนี้
                    ฉันอยากจะทำสิ่งนี้ต่อไป แต่ plotmatrix นั้นไร้สาระ Hadley แนะนำให้ใช้แพ็คเกจ GGallyแทน มันมีฟังก์ชั่นggpairsที่เป็นคู่พล็อตที่ได้รับการปรับปรุงอย่างมากมาย (ให้คุณใช้ตัวแปรที่ไม่ต่อเนื่องในเฟรมข้อมูลของคุณ) มันลงจุดที่แตกต่างกันในแต่ละตารางขึ้นอยู่กับประเภทตัวแปร:
library(GGally)
ggpairs(iris, aes(colour = Species, alpha = 0.4))
colourตัวแปรใด ๆจะต้องเป็นปัจจัย ใช้เวลา 45 นาทีเพื่อหาสิ่งนั้นออกมา
                    meltใช้ dataframe โดยใช้ตัวแปรที่คุณสนใจเป็นตัวแปร id จากนั้นจึงทำการ facet โดยตัวแปรอื่น ๆ
                    ggplot(data, aes(x=id, y=value)) + geom_point() + facet_grid(.~variable). ฉันสมมติว่าคุณกำลังพูดถึงแผนการกระจายเมื่อคุณพูดว่า "พล็อตสหสัมพันธ์" เพราะฉันไม่เคยได้ยินเรื่องนี้มาก่อน
                    GGally::ggpairs(iris, aes(colour = Species, alpha=0.4))
                    หากต้องการได้รับggplotวัตถุ (ไม่ใช่ggmatrixในกรณีของggpairs()) วิธีแก้ปัญหาคือการหลอมข้อมูลสองครั้งจากนั้นจึงทำการggplotปรับมุม facet_wrapจะดีกว่าfacet_gridในการ จำกัด พื้นที่พล็อตเนื่องจากมีการให้scales = 'free'พารามิเตอร์
require(ggplot2) 
require(dplyr)
require(tidyr)
gatherpairs <- function(data, ..., 
                        xkey = '.xkey', xvalue = '.xvalue',
                        ykey = '.ykey', yvalue = '.yvalue',
                        na.rm = FALSE, convert = FALSE, factor_key = FALSE) {
  vars <- quos(...)
  xkey <- enquo(xkey)
  xvalue <- enquo(xvalue)
  ykey <- enquo(ykey)
  yvalue <- enquo(yvalue)
  data %>% {
    cbind(gather(., key = !!xkey, value = !!xvalue, !!!vars,
                 na.rm = na.rm, convert = convert, factor_key = factor_key),
          select(., !!!vars)) 
  } %>% gather(., key = !!ykey, value = !!yvalue, !!!vars,
               na.rm = na.rm, convert = convert, factor_key = factor_key)
}
iris %>% 
  gatherpairs(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width) %>% {
  ggplot(., aes(x = .xvalue, y = .yvalue, color = Species)) +
      geom_point() + 
      geom_smooth(method = 'lm') +
      facet_wrap(.xkey ~ .ykey, ncol = length(unique(.$.ykey)), scales = 'free', labeller = label_both) +
      scale_color_brewer(type = 'qual')
}