绘制R数据帧中所有列的分布

时间:2018-01-29 18:03:55

标签: r ggplot2

我试图想出一个简洁的方法来绘制R数据框中所有列的网格视图。问题是我的数据框中包含离散值和数值。为简单起见,我们可以使用R提供的名为par(mfrow(x, y))的样本数据集。我会使用mapply来分割我的情节,也可能使用ggplot(iris, aes(Sepal.Length))+geom_density() 来循环显示每一列?我不确定这里最好的是什么。

我正在思考类似于:

Insert into `web`.`users`  (username,registered_time )
values (`nick`, '2018-01-29

Alias  Insert into tablename (col1, col2, ...)
values (val1, va2,...)

但是为每列绘制。我关心的是"物种"列是离散的。也许" geom_density"在这里使用不是正确的情节,但想法是在一个图中看到每个数据框的变量分布 - 甚至是离散的。离散值的条形图将用于此目的。基本上我试图做以下事情:

  • 循环浏览数据框中的每一列
  • 如果是数字,则绘制直方图
  • 如果离散(基本上是一个字符串),则绘制条形图

任何想法或建议都将不胜感激!

1 个答案:

答案 0 :(得分:2)

您可以使用__dict__包中的plot_grid功能。此函数获取由cowplot生成的图表列表,并创建一个新图表,将它们组合在一个网格中。

首先,使用ggplot创建一个图表列表,使用lapply表示数字变量,使用geom_density表示其他所有图表。

geom_bar

现在我们只需拨打my_plots <- lapply(names(iris), function(var_x){ p <- ggplot(iris) + aes_string(var_x) if(is.numeric(iris[[var_x]])) { p <- p + geom_density() } else { p <- p + geom_bar() } })

plot_grid