首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在同一幅图上绘制9幅图的最佳方法?

在同一幅图上绘制9幅图的最佳方法?
EN

Stack Overflow用户
提问于 2022-06-03 04:52:18
回答 2查看 34关注 0票数 0

尝试创建玻璃数据集中所有预测值的直方图。我最初使用par(mfrow=c(3,3))在同一个窗口上绘制了所有9个预测器,但得到的一个错误是边距太大。那好吧。无论如何,九次写hist(Glass$X)都是没有效率的。

所以我试着一次把它们都画出来。我对数据进行子集,以便只保留数字列,但是出现了一个错误,即它们不是数字列。我已经验证了所有的列都是数字的。我做错了什么?

代码语言:javascript
复制
library(mlbench)
data(Glass)
library(lattice)

par(mfrow=c(3,3))
hist(Glass$RI)

> Error in plot.new() : figure margins too large

Glass2=subset(Glass[1:9])
hist(Glass2)

> Error in hist.default(Glass2) : 'x' must be numeric
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-03 05:48:11

这是另一种潮流。

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

data(Glass)

Glass %>% 
  pivot_longer(-Type) %>% 
  ggplot(aes(value)) + 
  geom_histogram() + 
  facet_wrap(~name, 
             ncol = 3, 
             scales = "free")

结果:

票数 2
EN

Stack Overflow用户

发布于 2022-06-03 05:07:25

将数据子集到一个新的数据框架X中。与其键入X$x 9次,不如使用for循环。确保您的绘图窗口非常大,否则您将得到一个错误,即边距太小。

代码语言:javascript
复制
X <- Glass[,1:9]
par(mfrow = c(3, 3))
for (i in 1:ncol(X)) {
  hist(X[ ,i], xlab = names(X[i]), main = paste(names(X[i]), "Histogram"), col="steelblue")  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72484867

复制
相关文章

相似问题

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