2014-02-17 77 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