R:将一个变量与其余变量配对绘制

时间:2019-03-01 03:28:19

标签: r ggplot2 correlation ggpairs

我想用我的“ True”变量对与其余所有变量(人变量)生成一个相关图。我很确定这已经提出来了,但是我发现的解决方案对我不起作用。

body {
    color:white;
    height: 100%;
    min-width: 100%;
    background: url("https://i.postimg.cc/5tJtgDD1/friends.jpg") no-repeat center center fixed; 
  background-size: cover;
}

出现错误的地方:错误:列library(ggplot2) set.seed(0) dt = data.frame(matrix(rnorm(120, 100, 5), ncol = 6) ) colnames(dt) = c('Salary', paste0('People', 1:5)) ggplot(dt, aes(x=Salary, y=value)) + geom_point() + facet_grid(.~Salary) 必须是一维原子向量或列表。

我知道解决方案之一是写出y中的所有变量-因为我的真实数据有15列,所以我试图避免这种情况。

我也不完全确定ggplot中的“​​值”,“变量”指的是什么。我在演示代码时看到了很多。

任何建议都值得赞赏!

2 个答案:

答案 0 :(得分:1)

例如,您想使用wide将数据从long转换为tidyr::gather()格式。这是在tidyverse框架中使用包的解决方案

library(tidyr)
library(ggplot2)
theme_set(theme_bw(base_size = 14))

set.seed(0)
dt = data.frame(matrix(rnorm(120, 100, 5), ncol = 6) )
colnames(dt) = c('Salary', paste0('People', 1:5))

### convert data frame from wide to long format
dt_long <- gather(dt, key, value, -Salary)
head(dt_long)
#>      Salary     key     value
#> 1 106.31477 People1  98.87866
#> 2  98.36883 People1 101.88698
#> 3 106.64900 People1 100.66668
#> 4 106.36215 People1 104.02095
#> 5 102.07321 People1  99.71447
#> 6  92.30025 People1 102.51804

### plot
ggplot(dt_long, aes(x = Salary, y = value)) +
  geom_point() +
  facet_grid(. ~ key) 

### if you want to add regression lines
library(ggpmisc)

# define regression formula
formula1 <- y ~ x

ggplot(dt_long, aes(x = Salary, y = value)) +
  geom_point() +
  facet_grid(. ~ key) +
  geom_smooth(method = 'lm', se = TRUE) +
  stat_poly_eq(aes(label = paste(..eq.label.., ..rr.label.., sep = "~~")), 
               label.x.npc = "left", label.y.npc = "top",
               formula = formula1, parse = TRUE, size = 3) +
  coord_equal()

### if you also want ggpairs() from the GGally package
library(GGally)
ggpairs(dt)

reprex package(v0.2.1.9000)于2019-02-28创建

答案 1 :(得分:0)

您需要先stack()数据,这可能就是您“看到的”数据。

dt <- setNames(stack(dt), c("value", "Salary"))

library(ggplot2)
ggplot(dt, aes(x=Salary, y=value)) +
  geom_point() + 
  facet_grid(.~Salary)

产量

enter image description here