如何在Julia中绘制StatsBase.Histogram对象?

3

我在Julia中使用一个包(LightGraphs.jl),它有一个预定义的直方图方法,可以创建网络g的度分布。

deg_hist = degree_histogram(g)

我想绘制这个的图表,但我对在Julia中绘图还很陌生。返回的对象是一个StatsBase.Histogram,它有以下作为其内部字段:

StatsBase.Histogram{Int64,1,Tuple{FloatRange{Float64}}}
edges: 0.0:500.0:6000.0
weights: [79143,57,32,17,13,4,4,3,3,2,1,1]
closed: right

你能帮我解释如何使用这个对象绘制直方图吗?

2个回答

7

我以为这已经被实现了,但是我刚刚将该配方添加到StatPlots中。如果你查看主分支,你就可以使用:

julia> using StatPlots, LightGraphs

julia> g = Graph(100,200);

julia> plot(degree_histogram(g))

供参考,与 StatPlots 相关的配方:

@recipe function f(h::StatsBase.Histogram)
    seriestype := :histogram
    h.edges[1], h.weights
end

谢谢,我遇到了StatPlots包的问题需要解决,但这似乎非常方便。 - A.Yazdiha

3
使用直方图字段.edges和.weights进行绘图,例如:
using PyPlot, StatsBase
a = rand(1000); # generate something to plot
test_hist = fit(Histogram, a)

# line plot
plot(test_hist.edges[1][2:end], test_hist.weights)
# bar plot
bar(0:length(test_hist.weights)-1, test_hist.weights)
xticks(0:length(test_hist.weights), test_hist.edges[1])

或者你可以创建/扩展一个绘图函数,添加以下方法:

function myplot(x::StatsBase.Histogram)
... # your code here
end

然后,您将能够直接在直方图对象上调用绘图函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接