【问题标题】:Plot all columns from a data.frame in a subplot with ggplot2使用 ggplot2 在子图中绘制 data.frame 中的所有列
【发布时间】:2017-11-30 10:20:15
【问题描述】:

正如标题所示,我想绘制 data.frame 中的所有列,但我想以通用方式进行。我所有的专栏都是因素。 到目前为止,这是我的代码:

nums <- sapply(train_dataset, is.factor) #Select factor columns
factor_columns <- train_dataset[ , nums]

plotList <- list()
for (i in c(1:NCOL(factor_columns))){
  name = names(factor_columns)[i]
  p <- ggplot(data = factor_columns) +  geom_bar(mapping = aes(x = name))
  plotList[[i]] <- p
}
multiplot(plotList, cols = 3)

multiplot 函数来自这里:http://www.cookbook-r.com/Graphs/Multiple_graphs_on_one_page_(ggplot2)/

我的数据集来自 Kaggle(房价预测):https://www.kaggle.com/c/house-prices-advanced-regression-techniques

我从我的代码中得到的是下面的图片,它似乎是最后一列表现不佳。

这将是最后一列很好地表示:

编辑: 使用 gridExtra 作为@LAP 建议也不会给我一个好的结果。我用这个而不是多图。

nCol <- floor(sqrt(length(plotList)))
do.call("grid.arrange", c(plotList, ncol=nCol))

但我得到的是: 再说一次,SaleCondition 是唯一打印出来的东西,而且不是很好。 PD:我也试过cowplot,结果一样。

【问题讨论】:

  • 我会在原始数据集中添加额外的 SaleCondition 列,并将所有内容绘制在一张图中。
  • gridExtra 也可能有帮助。
  • 嗨 @PoGibas SaleCondition 已经在数据集中,我的意思是当我尝试对我的数据进行子图绘制时,我所拥有的只是最后一列“SaleCondition”。我无法将其全部绘制在一张图中,因为我想绘制条形图。 @LAP 我会看看那个。

标签: r plot ggplot2


【解决方案1】:

使用 tidyr,您可以执行以下操作:

factor_columns %>% 
  gather(factor, level) %>%
  ggplot(aes(level)) + geom_bar() + facet_wrap(~factor, scales = "free_x")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-26
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    相关资源
    最近更新 更多