首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用循环使用x,y和color=category绘制图形矩阵

使用循环使用x,y和color=category绘制图形矩阵
EN

Stack Overflow用户
提问于 2019-11-12 17:07:36
回答 2查看 63关注 0票数 0

我正在尝试运行一个简单的曲线图列表,来评估R中赋值的正确线性回归模型。基本上,在11列中,第一列是y,不同的列x= 3:11是θ,或者y所依赖的变量。第2列的分类值基本上为1-9 (9个类别)。

我正在尝试创建图形矩阵。我可以一个接一个地做图形,这应该适用于赋值,但我试图使用一个循环来完成它。代码如下:

第一列是y,从属和第3-11列是变量。如果我省略了根据第二列的着色,我可以用一个基图来完成它。如果我尝试上面的代码,我得不到任何结果

代码语言:javascript
复制
par(mfrow(3,3))
for(i in 3:11){
  ggplot(hd,aes(x=hd[1,],y=hd[,i],color=hd[,2]))+
  geom_point()
}

编辑:这是一个可重现的数据

代码语言:javascript
复制
library(dplyr)
library(ggplot2)
hd=data(economics)

par(mfrow(2,2))
    for(i in 3:6){
      ggplot(hd,aes(x=hd[3,],y=hd[,i])+
      geom_point()
    }

这没有颜色分类,但是如果我能让它工作,我可以只添加color=列参数

EN

回答 2

Stack Overflow用户

发布于 2019-11-12 18:44:01

如果我理解你想要的是什么,下面这样的东西应该可以工作。首先,制作一些可重现的数据,大致像您所描述的那样:

代码语言:javascript
复制
library(magrittr)
library(tidyverse)
data <- tibble(y = rnorm(10), 
               category = factor(sample(1:9, 10, replace = TRUE))) %>% 
  inset(paste0("x", 1:11), value = rnorm(110)) %>%
  pivot_longer(-c(y, category), names_to = "x_name", values_to = "x")

数据如下所示:

代码语言:javascript
复制
# A tibble: 6 x 4
      y category x_name      x
  <dbl> <fct>    <chr>   <dbl>
1  1.84 6        x1      1.06 
2  1.84 6        x2      0.744
3  1.84 6        x3     -1.19 
4  1.84 6        x4      1.88 
5  1.84 6        x5      2.16 
6  1.84 6        x6     -1.58

然后,您可以在此处使用facet_wrap为每个x_name创建一个带有面板的网格。我已经添加了geom_smooth

代码语言:javascript
复制
ggplot(data, aes(x = x, y = y)) +
  geom_point(aes(colour = category)) +
  facet_wrap(~x_name) +
  geom_smooth(method = "lm")

票数 1
EN

Stack Overflow用户

发布于 2019-11-12 18:58:42

我还鼓励您提供一个可重现的示例。

而不是"par(mfrow)“ggplot使用刻面的概念。看看这里:ggplot facetting

代码语言:javascript
复制
library(tidyr)
library(dplyr)
library(ggplot2)

# assuming the names of your dataframe hd are like this:
names(hd) = c('y', 'cat', 'x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9')

# then, the following code could solve your problem:
hd %>% 
  pivot_longer(x1:x9, names_to=var_x, values_to=val_x) %>% 
  ggplot(hd, aes(x=y, y=val_x, colour=cat)) +
  geom_point() +
  facet_wrap(~var_x, ncol=3)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58815296

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档