如何从 Julia 中的数据框中获取多个直方图

How can I get multiple histogram plots from a dataframe in Julia

我有一个 julia 数据框,我想将每一列绘制为直方图,但最终只显示最后一个。我正在使用 StatsPlot。有更好的绘图包吗?

using StatsPlots
@df df histogram(:x1)
@df df histogram(:x2)
@df df histogram(:x3)
@df df histogram(:x4)
@df df histogram(:x5)
@df df histogram(:x6)
@df df histogram(:x7)
@df df histogram(:x8)
@df df histogram(:x9)
@df df histogram(:x10)
@df df histogram(:x11)
@df df histogram(:x12)
@df df histogram(:x13)
@df df histogram(:x14)

正如 Bogumil 在他的评论中所说的那样,你并不完全清楚你想要的输出是什么,但我可以看到两种可能的方式:

如果你想为每一列创建一个单独的子图,你可以在你想要的列上广播 histogram 调用,例如:

julia> using Plots, DataFrames

julia> df = DataFrame([randn(1_000) .+ i for i ∈ 1:10], :auto);

julia> plot(histogram.(eachcol(df))...)

这给出了

或者,如果您想要覆盖所有直方图,您可以使用 histogram!(注意爆炸)来修改现有图:

julia> plot(); last(histogram!.(eachcol(df)))

请注意,这里我首先调用了 plot(),因为每个 histogram! 调用都会覆盖现有的(全局)绘图 object,所以如果我在创建 multiple-subplots 版本以上的附加直方图将绘制在现有的先前图上。

这两个建议都是为了简洁起见,可能会使对标签、标题等内容进行微调变得更加困难。我经常发现循环是一种更清晰的编写这些内容的方法,但希望它们能让您了解如何相对轻松地完成您所追求的(并且没有 StatsPlots,所有这些都很简单 Plots