我在朱莉娅中使用了一个包(LightGraphs.jl),它有一个预定义的直方图方法来创建一个网络g的度分布。
deg_hist = degree_histogram(g)我想把这件事编出来,但我对朱莉娅的阴谋并不熟悉。返回的对象是一个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你能帮我如何利用这个物体绘制直方图吗?
发布于 2016-11-04 13:28:32
使用直方图字段.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然后,您就可以直接在直方图对象上调用绘图函数。
发布于 2016-11-04 13:41:13
我原以为这已经实现了,但我只是将配方添加到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
endhttps://stackoverflow.com/questions/40423658
复制相似问题