根据 matplotlib 字典中的颜色对散点图进行分组 (python)

Group scatterplot by colour from dictionary in matplotlib (python)

我有一本要绘制的数据字典。我的字典目前的结构如下:(# = some number)

data = { '15': [{'x': #, 'y': #}, {'x': #, 'y': #}, etc..], '16': [{'x': #, 'y': #}, {'x': #, 'y': #}, etc..], '17': [{'x': #, 'y': #}, {'x': #, 'y': #}, etc..] }

我目前正在遍历字典中的每个键值并将 x 和 y 值附加到 x 和 y 数组,然后绘制 x 和 y

fig, ax = plt.subplots()
ax.scatter(x, y)
plt.show()

我仍然想绘制所有这些 x 和 y 点,但是 colour/seperate 它们来自哪个键的点。

对于这个示例字典,我想在情节上有一个图例,其中包含不同颜色的点,类别为:'15'、'16'、'17'

我专门在网上查找了一些资源 link:https://www.kite.com/python/answers/how-to-color-a-scatter-plot-by-category-using-matplotlib-in-python

并尝试过这样分开,但我认为这不是正确的方向:

pd.DataFrame(data)
pd.DataFrame.groupby(list(data.keys()))

据我了解,这应该可以回答您的问题

import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns

data = {'A': [{'x': 1, 'y' : 2}, {'x': 2, 'y' : 3}, {'x': 3, 'y' : 4}], 'B': [{'x': 5, 'y' : 6}, {'x': 6, 'y' : 7}, {'x': 7, 'y' : 8}], 'C': [{'x': 10, 'y' : 11}, {'x': 11, 'y' : 12}, {'x': 12, 'y' : 13}]}
x, y, group = [], [], []
for i in data:
    for j in data[i]:
        x.append(j['x'])
        y.append(j['y'])
        group.append(i)
        
plt.figure(figsize=(8,4))
sns.scatterplot(x = x, y = y, hue = group)
plt.savefig("fig.png")
plt.show()