【问题标题】:Plotting multiple histograms quickly in R在 R 中快速绘制多个直方图
【发布时间】:2017-07-28 14:24:17
【问题描述】:

对于探索性分析,在一个网格中快速绘制多个变量通常很有用。一个简单的方法是:

data(mtcars)    
hist(mtcars[,c(1,2,3,4)])

但是,调整中断和轴以保持一致性变得困难,即

hist(mtcars[,c(1,2,3,4)], breaks = 10)

不影响直方图。在ggplot2 中是否有解决此问题的简单方法或简单方法?

【问题讨论】:

  • hist(mtcars[c(1,2,3,4)]) 不起作用。你在屏幕上看到了什么?
  • 加载mtcars后,你的代码hist(mtcars[c(1,2,3,4),1])产生错误:Error in hist.default(mtcars[c(1, 2, 3, 4)]): 'x' must be numeric
  • 抱歉回复晚了,我的电脑有问题,然后忘记了。代码在 RStudio 中对我来说运行良好,但最好在列规范之前加一个逗号: hist(mtcars[,c(1,2,3,4)])

标签: r plot ggplot2 histogram


【解决方案1】:

这是使用hist() 的方法:

lapply(mtcars[1:4], FUN=hist)

但是我更喜欢使用 ggplot2 将绘图存储在 R 对象中,并使用 cowplot::plotgrid() 显示绘图列表:

list <-lapply(1:ncol(mtcars),
              function(col) ggplot2::qplot(mtcars[[col]],
                                           geom = "histogram",
                                           binwidth = 1))

cowplot::plot_grid(plotlist = list)

【讨论】:

  • 谢谢,我想我可以通过将 1:ncol(mtcars) 更改为 1:4 来解决这个问题。但是,当我运行 lapply(mtcars[1:4], FUN=hist) 时,我没有得到上面想要的结果。你知道这是为什么吗?
【解决方案2】:

使用ggplot2,您可以使用facet_wrap 创建基于其他变量的网格。

例如:

library(ggplot2)

data(mtcars)

ggplot(data = mtcars) +
    geom_histogram(aes(x = mpg), bins = 4, colour = "black", fill = "white") +
    facet_wrap(~ gear)

您可以使用bins 参数轻松设置您想要的休息次数。

【讨论】:

  • 这不是 OP 想要的——OP 要求如何绘制每一列的直方图,而不是一列一列。
  • @Gregor 我现在在看到另一个答案(有效并且似乎回答了这个问题)之后意识到这一点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多