首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在朱莉娅中绘制StatsBase.Histogram对象?

如何在朱莉娅中绘制StatsBase.Histogram对象?
EN

Stack Overflow用户
提问于 2016-11-04 13:15:52
回答 2查看 3K关注 0票数 3

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

代码语言:javascript
复制
deg_hist = degree_histogram(g)

我想把这件事编出来,但我对朱莉娅的阴谋并不熟悉。返回的对象是一个StatsBase.Histogram,它的内部字段如下:

代码语言:javascript
复制
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

你能帮我如何利用这个物体绘制直方图吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-04 13:28:32

使用直方图字段.edges和.weights绘制它。

代码语言:javascript
复制
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])

也可以创建/扩展绘图函数,添加如下方法:

代码语言:javascript
复制
function myplot(x::StatsBase.Histogram)
... # your code here
end

然后,您就可以直接在直方图对象上调用绘图函数。

票数 3
EN

Stack Overflow用户

发布于 2016-11-04 13:41:13

我原以为这已经实现了,但我只是将配方添加到StatPlots中。如果你去看师父,你就能做到:

代码语言:javascript
复制
julia> using StatPlots, LightGraphs

julia> g = Graph(100,200);

julia> plot(degree_histogram(g))

作为参考,我添加到StatPlots中的相关菜谱:

代码语言:javascript
复制
@recipe function f(h::StatsBase.Histogram)
    seriestype := :histogram
    h.edges[1], h.weights
end
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40423658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档