2013-12-07 76 views
0

我有一個值的列表(整數),我想在圖上顯示每個值的發生次數。 我創建了一個值列表和相應的頻率從列表中的字典,因爲在這裏搜索後,這似乎是最好的辦法做到這一點在xy風格創建直方圖數據的loglog圖-python,matplotlib,

我想繪製數據出xy loglog圖(連接線),而不是使用條形圖。

圖上的數據點顯示爲使用

plot.loglog(degree_frequencies.keys(),degree_frequencies.values()) 

時然而預期的,因爲在圖中的線「座標」連接第一鍵值的第二,第二至第三等,並無序的,這創造了一條跳到所有地方的線,而不是從左到右的線。

下面是一個例子的數據集 - 其中,所述第一「座標」對具有比所述第二

degree_frequencies = {8: 1, 2: 6, 3: 1, 5: 2, 6: 2} 

更高的x值(如果字典被重新排列爲{2:6,3:1, 5:2,6:2,8:1}這條線看起來很好)

任何人都可以建議最好的方式去做這件事嗎?我想知道,如果我需要首先以不同的方式處理列表,或者實際上是使用matplotlib繪製數據的方式。

我是一個相對缺乏經驗的Python用戶,但我花了一些時間來瀏覽互聯網和文檔(我發現很重要),卻沒有找到答案。 易於理解/實現(在我的情況下)可能比優雅但複雜的解決方案(如果位置)更有幫助。

感謝

回答

0
x = sorted(degree_frequencies.keys()) 
y = [ degree_frequencies[ k ] for k in x ] 
plt.loglog(x, y) 
+0

感謝您的答覆 似乎也沒有任何效果。 我不知道爲什麼它應該或者因爲它不會改變kv字典對傳遞給圖的順序? 雖然我可能會錯過一些東西(或者我可能沒有足夠清楚地解釋我的困難)。 我擴大了原來的Q,所以希望現在更有意義 – Fluff

+0

@Fluff對不起,我誤解了你的問題,我會編輯我的回答 –

+0

嗨亞軍 - 不用擔心;我可能沒有把我的OP很好地放在第一位。您更新的答案效果很好,這對我也很有意義。 雙贏。 非常感謝, – Fluff