log binning (see also) का उपयोग करें। यहां Counter
ऑब्जेक्ट लेने के लिए कोड है जो डिग्री मानों के हिस्टोग्राम का प्रतिनिधित्व करता है और स्पैसर और चिकनी वितरण का वितरण करने के लिए वितरण को लॉग-बिन करता है।
import numpy as np
def drop_zeros(a_list):
return [i for i in a_list if i>0]
def log_binning(counter_dict,bin_count=35):
max_x = log10(max(counter_dict.keys()))
max_y = log10(max(counter_dict.values()))
max_base = max([max_x,max_y])
min_x = log10(min(drop_zeros(counter_dict.keys())))
bins = np.logspace(min_x,max_base,num=bin_count)
# Based off of: http://stackoverflow.com/questions/6163334/binning-data-in-python-with-scipy-numpy
bin_means_y = (np.histogram(counter_dict.keys(),bins,weights=counter_dict.values())[0]/np.histogram(counter_dict.keys(),bins)[0])
bin_means_x = (np.histogram(counter_dict.keys(),bins,weights=counter_dict.keys())[0]/np.histogram(counter_dict.keys(),bins)[0])
return bin_means_x,bin_means_y
NetworkX
में एक क्लासिक पैमाने मुक्त नेटवर्क जनरेट कर रहा है और उसके बाद इस साजिश रचने:
import networkx as nx
ba_g = nx.barabasi_albert_graph(10000,2)
ba_c = nx.degree_centrality(ba_g)
# To convert normalized degrees to raw degrees
#ba_c = {k:int(v*(len(ba_g)-1)) for k,v in ba_c.iteritems()}
ba_c2 = dict(Counter(ba_c.values()))
ba_x,ba_y = log_binning(ba_c2,50)
plt.xscale('log')
plt.yscale('log')
plt.scatter(ba_x,ba_y,c='r',marker='s',s=50)
plt.scatter(ba_c2.keys(),ba_c2.values(),c='b',marker='x')
plt.xlim((1e-4,1e-1))
plt.ylim((.9,1e4))
plt.xlabel('Connections (normalized)')
plt.ylabel('Frequency')
plt.show()
नीले रंग में "कच्चे" वितरण और में "बिन" वितरण के बीच ओवरलैप दिखा निम्नलिखित साजिश का उत्पादन लाल। अगर मैंने कुछ स्पष्ट नहीं छूटा है कैसे इस दृष्टिकोण या प्रतिक्रिया को सुधारने के लिए
विचार का स्वागत है।
स्रोत
2013-05-10 20:54:16
यहां सवाल क्या है? ऐसा लगता है कि आप पहले से ही वह परिणाम प्राप्त कर चुके हैं जिसे आप ढूंढ रहे हैं। आपको "इसे बेहतर बनाने" से अधिक विशिष्ट होने की आवश्यकता होगी। – Hooked
कोई सवाल नहीं है, सिर्फ यह साझा करना कि मैंने किसी समस्या का समाधान कैसे किया और इसे दूसरों के फीडबैक तक खोलना अगर मैं अपने दृष्टिकोण में कुछ याद कर चुका हूं। –
ऐसा करने का बेहतर तरीका, अन्यथा यह बंद हो जाएगा, इसे एक प्रश्न में तोड़ना और इसे स्वयं जवाब देना है। Http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ – Hooked