2016-11-04 2 views
4

Julia에서 패키지 (LightGraphs.jl)를 사용하고 있으며 네트워크 g의 차수 분포를 만드는 미리 정의 된 히스토그램 방법이 있습니다.Julia의 StatsBase.Histogram 객체를 플롯하는 방법은 무엇입니까?

deg_hist = degree_histogram(g) 

줄거리를 만들고 싶지만 줄리아에서 음모를 꾸미는 것이 처음입니다.

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 

당신은 내가 히스토그램을 플롯이 객체의 사용을 만들 수있는 방법 좀 도와 줄래 : 반환되는 객체는 그 내부 필드로 다음이있는 StatsBase.Histogram입니까?

답변

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 

그런 다음 히스토그램 개체에 직접 플로팅 함수를 호출 할 수 있습니다.

6

이미 구현 된 것으로 생각했지만 방금 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 
+0

감사합니다, 나는이 문제를 가지고 당신이 마스터를 선택하면, 당신은 할 수 있습니다 내가 해결해야 할 StatPlots 패키지와 함께,하지만 이것은 매우 편리하게 보입니다. –

관련 문제