2014-02-17 84 views
5

我需要幫助繪製字典,以下是數據樣本數據集。我想創建一個散點圖,其中x:y是(x,y)座標,title'x'是圖的圖例。我想要創建下面數據集的圖形,以便將所有下面的數據組合到一個圖中。使用matplotlib在字典中繪製散點圖

例如:紅色(或其他任何顏色)作出傳說(鍵)說,紅色(或其他顏色)是TITLE1,

做情節TITLE1' :{Y X:Y,X}與title2相同:{x:y,x:y}(以不同的顏色)....等等。

任何幫助將不勝感激。謝謝。

data = {'title1':{x:y, x:y},title2:{x:y,x:y,x:y},'title3':{x:y,x:y}....} 

我也按照這個建議,但它是爲個人圖。 Plotting dictionaries within a dictionary in Myplotlib python

這是我試過的,我沒有太多的matplotlib經驗,找不到任何有用的onlline。任何幫助將不勝感激。

import matplotlib.pyplot as plt 
import numpy as np 
d ={'5000cca234c1c445': {382877: 7, 382919: 3}, 
'5000cca234c94a2e': {382873: 1, 382886: 1}, 
'5000cca234c89421': {383173: 1, 383183: 2, 382917: 1, 382911: 1}, 
'5000cca234c5d43a': {382889: 1, 382915: 1, 382917: 8}, 
'5000cca234c56488': {382909: 2, 382911: 5}} 

xval = [] 
yval= [] 
ttle = [] 
print d 
for title, data_dict in d.iteritems(): 
    x = data_dict.keys() 
    #print 'title is', title 
    #print 'printing x values',x 
    xval = xval + x 
    print xval 
    y = data_dict.values() 
    yval = yval+y 
    ttle.append(title) 
    print yval 
#print 'printing y values', y   
#plt.figure() 
print xval 
print yval 
print ttle 
plt.scatter(xval,yval) 
plt.show() 
+0

你從哪裏得到的標題?你在問Matplotlib的確切語法嗎?還是你問如何從字典中獲取該格式? – ForgetfulFellow

+0

你可以使用你試過的任何代碼嗎?這個問題目前讀作'請爲我做我的工作'。你會得到更好的幫助,如果你的問題讀爲'這是我所嘗試的,我希望它做X,但它確實是Y,什麼是錯' – tacaswell

+0

對不起,提供的信息不足......這就是我所擁有的嘗試.. – user3262210

回答

5

你可以嘗試在循環繪製,之後顯示的傳說,是這樣的:

import matplotlib.pyplot as plt 

d ={'5000cca234c1c445': {382877: 7, 382919: 3}, 
'5000cca234c94a2e': {382873: 1, 382886: 1}, 
'5000cca234c89421': {383173: 1, 383183: 2, 382917: 1, 382911: 1}, 
'5000cca234c5d43a': {382889: 1, 382915: 1, 382917: 8}, 
'5000cca234c56488': {382909: 2, 382911: 5}} 

colors = list("rgbcmyk") 

for data_dict in d.values(): 
    x = data_dict.keys() 
    y = data_dict.values() 
    plt.scatter(x,y,color=colors.pop()) 

plt.legend(d.keys()) 
plt.show() 
+0

這可能如何工作?不是keys()和values()的順序是隨機的嗎?他們怎麼可能正確排列? – robru

+3

@Robru我想這裏是答案[https://docs.python.org/2/library/stdtypes.html#dict.items]。 TLTR;它們是隨機的,但如果在調用之間沒有對字典進行修改,則它們彼此對應。 –

+3

請注意,這在python 3.x中不起作用。你必須寫一些像'list(data_dict.keys())'(這些值相同)。有關更多詳細信息,請參閱http://stackoverflow.com/questions/31755900/python-3-xs-dictionary-view-objects-and-matplotlib。 – jojo