你可以告诉我,如果没有安装额外的库,有没有办法在R中动态绘制多个直方图,而不需要重叠.动态地绘制直方图,并改变列数.下面的代码只有4列,但可以在2到20列之间进行更改.
示例情节
我的代码
set.seed(3)
Ex <- xts(1:100, Sys.Date()+1:100)
df = data.frame(Ex,matrix(rnorm(100*4,mean=123,sd=3), nrow=100))
df<-df[,-1]
for(i in names(df)){
dfh<-hist(df[[i]], plot=FALSE)
}
plot(dfh,main="Histogram",xlab="x",col="green",label=TRUE)
Run Code Online (Sandbox Code Playgroud)
这只绘制了最后一个直方图
如果要在同一屏幕中有多个绘图,可以使用该命令
par(mfrow = c(2,1))
Run Code Online (Sandbox Code Playgroud)
其中c(2,1)表示您希望拥有2行1列图表,并将图表并排放置.如果你输入c(1,3),你会告诉R将你的图表分为1行和3列,依此类推.
然后一个接一个地绘制你的图表,他们将填补相应的空间.
编辑:如果你想自动计算par函数的行和列,你可以创建一个这样的函数(或更精致的东西,并将其传递给par)
dimension = function(df){
kk = dim(df)[2];
x = round(sqrt(kk),0);
y = ceiling(kk/x);
return(c(x,y))
}
Run Code Online (Sandbox Code Playgroud)
成为你的代码
set.seed(3)
Ex <- xts(1:100, Sys.Date()+1:100)
df = data.frame(Ex,matrix(rnorm(100*4,mean=123,sd=3), nrow=100))
df<-df[,-1]
par(mfrow = dimension(df))
for(i in names(df)){
hist(df[[i]] ,main="Histogram",xlab="x",col="green",label=TRUE,plot = TRUE)
}
Run Code Online (Sandbox Code Playgroud)