如何从 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
)
我有一个 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
)