使用带有字典的matplotlib在python中绘制散点图

Posted

技术标签:

【中文标题】使用带有字典的matplotlib在python中绘制散点图【英文标题】:Plot a scatter plot in python with matplotlib with dictionary 【发布时间】:2014-02-17 06:54:01 【问题描述】:

我需要帮助绘制字典,下面是数据样本数据集。我想创建一个散点图,其中 x:y 是 (x,y) 坐标,title'x' 将是图表的图例。我想创建以下数据集的图表,因此将以下所有数据组合在一个图表中.

例如:用红色(或任何其他颜色)绘制 title1':x:y, x:y 制作一个图例(键),说明红色(或任何颜色)用于 title1,

对 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 方面没有太多经验,在网上找不到任何有用的东西。任何帮助将不胜感激。

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()

【问题讨论】:

你从哪里得到标题?你问的是 Matplotlib 的确切语法吗?还是您在问如何从字典中获取该格式? 你能展示使用你尝试过的任何代码吗?这个问题目前读作“请为我做我的工作”。如果您的问题是“这是我尝试过的,我希望它做 X,但它做 Y,有什么问题”,您将获得更好的帮助。 抱歉没有提供足够的信息......这是我尝试过的...... 【参考方案1】:

您可以尝试在循环上绘图,然后显示图例,如下所示:

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()

【讨论】:

这怎么可能工作?键()和值()的顺序不是随机的吗?他们怎么可能正确排列? @Robru 我想这就是答案 [docs.python.org/2/library/stdtypes.html#dict.items]. TLTR;它们是随机的,但如果在调用之间没有修改字典,它们是相互对应的。 请注意,这在 python 3.x 中不起作用。您必须编写类似list(data_dict.keys()) 的内容(值相同)。有关详细信息,请参阅***.com/questions/31755900/…。【参考方案2】:

试试这个:

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

plt.scatter(*zip(*data.items()))
plt.show()

【讨论】:

欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。

以上是关于使用带有字典的matplotlib在python中绘制散点图的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中使用带有多处理的 matplotlib 保存多个图像(~50k)

在 matplotlib 中使用带有 x 和 y 的方程和 Python 的 3D 绘图

Python / Matplotlib:带有contourf的颜色条不尊重自定义cmap的刻度标签

python字典参数到带有烧瓶模板的JS字典[重复]

带有列表的 Python 字典,如何在节俭的存根代码中描述它?

Python数据可视化编程实战-1