我有一个包含8列(8个变量)和1000个观察值的数据帧。我想在同一个面板中为每个变量绘制直方图和箱形图。
例如
h1 h2 h3 h4
b1 b2 b3 b4
h5 h6 h7 h8
b5 b6 b7 b8
其中hn =变量n的直方图。 和bn =变量n的箱形图。
我试过了 箱线图(数据帧)
HIST(数据帧)
但是箱图位于同一个图表中,直方图出现以下错误:
hist.default(dataframe)中的错误='x'必须是数字
提前致谢!
概率pd。是否可以在此面板中添加调色板?
答案 0 :(得分:0)
我建议您只需编写一个小循环,一次挑出一列并绘制它。你需要对此进行微调,但它应该足以让你开始:
par(mfrow = c(8,2))
for(i = 1:8){
hist(dataframe[,i])
boxplot(dataframe[,i])
}
答案 1 :(得分:0)
您从hist(dataframe)
获得的错误是因为hist
需要提供“值向量”。请参阅x
中?hist
的说明。另一方面,boxplot
接受“数字向量或包含此类向量的单个列表”。由于数据框是一个列表,hist
将接受df
。
因为您希望将所有地块都放在“同一面板”上,所以您需要将它们安排在您的绘图设备上,例如使用par(mfrow =
(见?par
)。
以前的一些帖子显示了如何将单个直方图与箱线图(this和this)结合起来。这是使用包histBxp
中的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))