首页 > 解决方案 > 我想用 2 个单独的字典键绘制散点图

问题描述

用 2 个单独的字典绘制散点图。

dict1 = {'A': 6,'B': 3,'C': 2}
dict2 = {'A': 3300.0, 'B': 100.0, 'C': 300.0}

我想得到一个散点图,其中 dict1 的值为 x 轴,dict2 的值为 y 轴,每个点标记为 A、B 和 C

我试过了:

x = list(dict1.keys())
y = list(dict2.keys())
labels = list(dict1.keys())
plt.scatter(x,y)
plt.show()



但是,我查看了 plt.scatter() 的参数,所以我尝试了

plt.scatter(x,y,label=labels)
plt.show()

标签没有显示

标签: python-3.xmatplotlib

解决方案


你几乎做到了。

x = list(dict1.values())
y = list(dict2.values())
n = list(dict2.keys())
plt.scatter(x,y)

到目前为止,你已经做得很完美了。您已经绘制了散点图。现在让我们进入注释部分。

到目前为止,字典的键所伴随的点(在这种情况下,两个键是相同的)。为了同时获得点(作为列表 x 和 y)以及键(作为列表 n),我们需要 enumerate() 函数。

enumerate() 函数接受一个可迭代对象作为参数,例如列表、字符串、元组或字典。

因此,对于“n”列表中的每个项目(元素)及其索引(i),我可以用元素注释绘图的索引(散点)。这可以通过以下方式实现,

for i, element in enumerate(n):
    plt.annotate(element, (x[i], y[i]))

我希望这个解释也有帮助。


推荐阅读