【问题标题】:I want to plot a scatter plot with 2 separate dictionary keys我想用 2 个单独的字典键绘制散点图
【发布时间】:2019-04-05 03:36:04
【问题描述】:

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

标签没有显示

【问题讨论】:

  • @Andreas 很抱歉没有遵循发布问题指南。我已经尝试解决这个问题。
  • 点通过plt.annotate 标记。此外,如果要在轴上使用字典值,则需要使用 dict.values(),而不是 dict.keys()

标签: python-3.x matplotlib


【解决方案1】:

你几乎做到了。

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

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

【讨论】:

  • 代码在附有解释时会更有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请edit您的问题并解释它如何回答所提出的具体问题。见How to Answer
猜你喜欢
  • 2020-07-28
  • 2020-10-18
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多