在一张图中绘制多种不同类型的ggplots

我正在尝试在一张图中绘制多个不同的ggplots(请参见下面的代码)。

我认为应该这样做:

library(ggplot2)
library(Rmisc)
set.seed(1)
y <- rnorm(12,0,1)
df <- data.frame(y=rep(y,3),age=rnorm(12,50,2),sex=c(rep("female",6),rep("male",6)),race=c(rep("black",3),rep("white",3),rep("other",3)))
df$sex <- as.factor(df$sex)
df$race <- as.factor(df$race)
covariates = c("age","sex","race")
ggplot_list <- vector(mode="list", length(covariates))
for(i in 1:length(covariates)){
  if(is.factor(df[,covariates[i]])){
    ggplot_list[[i]] <- ggplot(df, aes(x=df[,covariates[i]], y=df$y), environment = environment())+geom_boxplot()+geom_jitter()+labs(x = covariates[i],y="y")
  } else{
    ggplot_list[[i]] <- ggplot(df, aes(x=df[,covariates[i]], y=df$y), environment = environment())+geom_point(shape=1)+labs(x = covs[i],y="y")
  }
}

但:

multiplot(plotlist=ggplot_list,cols=length(covariates))

帮助..

给出: 在此处输入图片说明

eipi10

在内部,aes您仅应引用列名称,而不要同时包含数据框名称和列名称。您已经将数据框传递到ggplotggplot(df,...))中,因此ggplot已经可以访问其环境中的数据框列。aes通过告诉ggplot进入该数据帧的父环境,可以将数据帧包含在内,从而颠覆了这一点。这是您的代码版本,可以完成您想要的功能。我们使用aes_string代替,aes以便我们可以将covariatesas的值传递为字符串:

ggplot_list <- vector(mode="list", length(covariates))

for(i in 1:length(covariates)){
  if(is.factor(df[,covariates[i]])){
    ggplot_list[[i]] <- ggplot(df, aes_string(x=covariates[i], y="y")) +
      geom_boxplot() + 
      geom_jitter() + 
      labs(x = covariates[i], y="y")
  } else{
    ggplot_list[[i]] <- ggplot(df, aes_string(x=covariates[i], y="y")) +
      geom_point(shape=1) + 
      labs(x = covariates[i],y="y")
  }
}

这是一个更简洁的版本:

# List to store plots
pl = list()

for (i in covariates) {

  # Set up parts of plot that don't change
  pl[[i]] = ggplot(df, aes_string(x=i, y="y")) + labs(x = i)

  # Different handling for categorical and numeric x variable
  if (is.numeric(df[,i])) {
    pl[[i]] = pl[[i]] + geom_point(shape=1)
  } else {
    pl[[i]] = pl[[i]] + geom_boxplot() + geom_jitter(width=0.2) 
  }
}

您也可以使用lapply而不是for循环来执行此操作

pl = lapply(covariates, function(cc) { 

  # Set up parts of plot that don't change
  p = ggplot(df, aes_string(x=cc, y="y")) + labs(x = cc)

  # Different handling for categorical and numeric x variable
  if (is.numeric(df[, cc])) {
    p = p + geom_point(shape=1)
  } else {
    p = p + geom_boxplot() + geom_jitter(width=0.2) 
  }
})

来布置图,使用grid.arrangegridExtra包(plot_gridcowplot是另一种选择,如通过@JoshuaRosenberg指出):

library(gridExtra)
grid.arrange(grobs=pl, ncol=length(covariates))

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

R ggplot:一张图中的两个直方图(基于两个不同的列)

来自分类Dev

使用ggplot在一张图中为带有不同标签的分组数据绘制两条线图

来自分类Dev

Cakephp-一张桌子的多种模型

来自分类Dev

在pandas或matplotlib的一张图中绘制多个boxplot?

来自分类Dev

如何在matplotlib的一张图中绘制由不同日期但时间戳相同的时间序列

来自分类Dev

在一张图中绘制多种不同类型的ggplots

来自分类Dev

在一张图中绘制多个不同长度的熊猫系列

来自分类Dev

在一张图中绘制不同回归的边际效应

来自分类Dev

使用绘图在一张图中绘制多条3d线

来自分类Dev

如何使用ggplot&R在同一张图表上绘制不同类型的多条线

来自分类Dev

Matplotlip-在一张图中从数据框绘制多条线

来自分类Dev

将2个不同年份的.resample(D).size()绘制到一张图表中?

来自分类Dev

使用ggplot在一张图中为带有不同标签的分组数据绘制两条线图

来自分类Dev

绘图:在一张有条件的图中绘制多个熊猫数据框

来自分类Dev

如何在同一张图上绘制来自不同模型的多个学习曲线?

来自分类Dev

荣:如何在同一张图中添加不同颜色的边缘

来自分类Dev

在matplotlib中自动缩放,在同一张图表中绘制不同的时间序列

来自分类Dev

SQL:在同一张表上多次使用不同类型的左连接,重复行以在其中添加值

来自分类Dev

在一张图中绘制两条曲线遇到错误(python-pandas-matplotlib)

来自分类Dev

如何在R的同一张图中将不同月份绘制为不同系列

来自分类Dev

在同一张图中绘制功能,彼此相邻的参数不同

来自分类Dev

Shiny + ggplot2:根据用户输入在一张图中绘制多条线

来自分类Dev

一张图中的多个 GridSpecs

来自分类Dev

在一张图中绘制两个散点图

来自分类Dev

如何在一张图中显示具有不同比例轴的多个雷达图?

来自分类Dev

建立关系,以便用户可以通过同一张表关注多种模型类型

来自分类Dev

在一张图中绘制两个多边形

来自分类Dev

多种类型 onmouseover="bigImg(this)" 一张一张

来自分类Dev

在一张图中绘制多个箱线图

Related 相关文章

  1. 1

    R ggplot:一张图中的两个直方图(基于两个不同的列)

  2. 2

    使用ggplot在一张图中为带有不同标签的分组数据绘制两条线图

  3. 3

    Cakephp-一张桌子的多种模型

  4. 4

    在pandas或matplotlib的一张图中绘制多个boxplot?

  5. 5

    如何在matplotlib的一张图中绘制由不同日期但时间戳相同的时间序列

  6. 6

    在一张图中绘制多种不同类型的ggplots

  7. 7

    在一张图中绘制多个不同长度的熊猫系列

  8. 8

    在一张图中绘制不同回归的边际效应

  9. 9

    使用绘图在一张图中绘制多条3d线

  10. 10

    如何使用ggplot&R在同一张图表上绘制不同类型的多条线

  11. 11

    Matplotlip-在一张图中从数据框绘制多条线

  12. 12

    将2个不同年份的.resample(D).size()绘制到一张图表中?

  13. 13

    使用ggplot在一张图中为带有不同标签的分组数据绘制两条线图

  14. 14

    绘图:在一张有条件的图中绘制多个熊猫数据框

  15. 15

    如何在同一张图上绘制来自不同模型的多个学习曲线?

  16. 16

    荣:如何在同一张图中添加不同颜色的边缘

  17. 17

    在matplotlib中自动缩放,在同一张图表中绘制不同的时间序列

  18. 18

    SQL:在同一张表上多次使用不同类型的左连接,重复行以在其中添加值

  19. 19

    在一张图中绘制两条曲线遇到错误(python-pandas-matplotlib)

  20. 20

    如何在R的同一张图中将不同月份绘制为不同系列

  21. 21

    在同一张图中绘制功能,彼此相邻的参数不同

  22. 22

    Shiny + ggplot2:根据用户输入在一张图中绘制多条线

  23. 23

    一张图中的多个 GridSpecs

  24. 24

    在一张图中绘制两个散点图

  25. 25

    如何在一张图中显示具有不同比例轴的多个雷达图?

  26. 26

    建立关系,以便用户可以通过同一张表关注多种模型类型

  27. 27

    在一张图中绘制两个多边形

  28. 28

    多种类型 onmouseover="bigImg(this)" 一张一张

  29. 29

    在一张图中绘制多个箱线图

热门标签

归档