使用带有字典的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的刻度标签