首页 > 解决方案 > 在 Python 中绘制键值对

问题描述

我正在尝试在字典中绘制键值对。问题是我的值是列表,每个包含数百个数据点。我需要将这些与密钥(代表年份)进行对比。我有一张我正在研究的论文的示例图片(附在此处) 。我需要能够像那样的情节。一个值中的所有数据点都针对它的键(年份)。

如果我的字典是 d,我尝试了以下方法:

f=list(d.items())
plt.plot(f[0][0],f[0][1])

但我收到以下错误:

ValueError:x 和 y 必须具有相同的第一维,但具有形状 (1,) 和 (408,)

请让我知道是否有任何方法可以绘制它,以便我可以获得类似于所附的情节。提前致谢。

PS。示例图是使用 IDL 完成的,以防有人想知道,因为它看起来不像 python 图。

标签: pythonpython-3.xmatplotlib

解决方案


要将多个 y 值添加到 x 轴上的同一点,您需要将 x 值带到与 y 值相同的维度:

y = [[5,1,2,3,9,10],[1,1,5,7.2,3.4,9,6.6,2,4]]
x = ['2000','2001']

for x_val, y_val in zip(x, y): # Getting related pairs from x and y
    plt.scatter([x_val] * len(y_val), y_val) # Bumping the dimension of x_val to the dimension of y_val before plotting

plt.show()

输出:

完成的情节

因此,对于您的问题,您可以尝试这样做:

f=list(d.items())
x = f[0][0]
y = f[0][1]

for x_val, y_val in zip(x, y):
    plt.scatter([x_val]

推荐阅读