Matplot lib不会在我的字典中绘制所有值

时间:2017-07-31 21:25:54

标签: python dictionary matplotlib

我正在使用python和matplotlib来制作图表。图表工作正常,下面是它的图片。

My Graph

但是,我无法在此基础上绘制第二组数据。我只想绘制对应于我称之为“F_type”的字典值的垂直线,其中包含15个项目。我尝试使用此代码执行此操作:

F_type = {'CaII': 3933.70, 'CaII': 3968.50, 'H': 3970.10, 'H': 4101.70, 'HeI': 4121.00, 'SiII': 4128.00, 'SiII': 4131.00, 'CaI': 4227.00, 'FeI': 4299.00, 'FeI': 4303.00, 'H': 4340.50, 'CH': 4314.00, 'MgII': 4481.00, 'H': 4861.30, 'H': 6562.70}

for keys, values in F_type.items():
    plt.axvline(x=values)

但是,结果图仅显示15个值中的8个。

It looks like this

为什么matplotlib没有绘制字典中的每个值?

1 个答案:

答案 0 :(得分:0)

Python不允许完全相同的键。

例如:

>>> d = {'a': 0, 'a': 1, 'b': 0}
>>> d
{'a': 1, 'b': 0}

因此,在构建字典时,您会有效地丢失一些信息。因此,单独从这本词典中绘图是不可能的(因为信息不存在)。

好像你正在使用字典键作为某种分类。在这种情况下,也许一个元组列表更有意义:

F_type = [('CaII', 3933.70), ('CaII', 3968.50), etc, etc]
for val in F_type:
    plt.axvline(x=val[1])