R中数据框的直方图颜色

Color of histograms from data frame in R

在 R 中,hist.data.frame(来自 Hmisc)为数据框中的每一列生成直方图,但我不知道如何更改条形的颜色。有什么办法可以做到这一点吗?

library(Hmisc)
tmp<-data.frame(c(1,1,2,3),c(2,2,1,3))

# histograms of both columns, in white. how do I get them in blue?
hist(tmp)

Hmisc 的 hist.data.frame 函数没有颜色参数选项。所有对 base hist() 的调用都没有颜色参数。一个非常 hack-y 的解决方法是创建您自己的 hist.data.frame 以临时重新定义 hist() 函数并允许您更改颜色。例如

hist.data.frame <- function(x, ..., colors=rainbow(ncol(x))) {
    col<-1
    hist<-function(...) {
        graphics::hist(..., col=colors[col])
        col <<- col+1
    }
    f <- Hmisc:::hist.data.frame
    environment(f) <- environment()
    f(x,...)
}

hist(iris)