我有一个 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!
(注意 bang)它修改了一个现有的情节:julia> plot(); last(histogram!.(eachcol(df)))
请注意,这里我调用了
plot()
第一如每 histogram!
call 覆盖了一个现有的(全局)绘图对象,所以如果我在创建多子图版本之后调用它,附加直方图将被绘制在现有的先前绘图上。这两个建议都是为了简洁,可能会使微调标签、标题等内容变得更加困难,我经常发现循环是编写这些内容的更清晰的方式,但希望它们能让您了解自己的情况after 可以相对容易地完成(并且没有
StatsPlots
,所有这些都是简单的 Plots
)
关于dataframe - 如何从 Julia 的数据框中获取多个直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68913349/