0

我有一个包含 8 列(8 个变量)和 1000 个观察值的数据框。我想为同一面板中的每个变量绘制直方图和箱线图。

例如

h1 h2 h3 h4

b1 b2 b3 b4

h5 h6 h7 h8

b5 b6 b7 b8

其中 hn = 变量 n 的直方图。和 bn = 变量 n 的箱线图。

我试过箱线图(数据框)

历史(数据框)

但是箱线图位于同一个图表中,直方图出现以下错误:

hist.default(dataframe) = 'x' 中的错误必须是数字

提前致谢!

PD。是否可以在此面板中添加调色板?

4

2 回答 2

0

我建议简单地编写一个小循环来一次选择一列并绘制它。您需要对此进行微调,但这应该足以让您入门:

par(mfrow = c(8,2))
for(i = 1:8){
  hist(dataframe[,i])
  boxplot(dataframe[,i])
}
于 2013-08-25T02:42:36.883 回答
0

您得到的错误hist(dataframe)是因为hist需要输入“值向量”。见 ) 中的x描述?histboxplot另一方面,接受“数字向量或包含此类向量的单个列表”。因为数据框是一个列表,所以hist会接受df.

因为您希望将所有绘图都放在“同一面板”上,所以您需要将它们安排在绘图设备上,例如使用par(mfrow =(参见 参考资料?par)。

之前有一些帖子展示了如何将单个直方图与箱线图(thisthis)结合起来。histBxp这是使用from package的另一种可能性sfsmisc

library(sfsmisc)

# Some dummy data
df <- data.frame(matrix(rnorm(200), ncol = 8))

# arrange plots in two rows and four columns
par(mfrow = c(2,4)) 

# create a palette to pick colours from (see `palette`), e.g:
mycols <- rainbow(n = 8)

# 'loop' over columns in df using lapply, and make a "histBxp" for each column.
lapply(1:8, function(i) histBxp(df[ , i], main = "", xlab = i,
                            col = mycols[i],
                            boxcol = mycols[i],
                            medcol = 1))
于 2013-08-25T03:15:07.103 回答