首页 > 解决方案 > 散点图,其中 y 是分类的,x 是集合列表

问题描述

我想要一个y轴是分类的图,例如

classes = ["A","B","C","D","E"]

x轴是数字列表

nums = [1,2,3,4,5,6,7,8,9]

现在每个数字都可以有一个对应的集合

dic = 
    {
    1: {"A", "B"},
    2: {"D"},
    3: {"C", "D", "E"},
    4: {},
    ...
    }

对于每个数字,如果存在,我想为相应的类绘制一个散点。像这样的东西。如何使用 matplotlib 实现它?

我尝试了很多,例如:

plt.scatter(x=dic, y=classes)
plt.show()

但它不适用于错误 ValueError: x and y must be the same size

在此处输入图像描述

标签: pythonmatplotlib

解决方案


您需要创建一个点列表才能使用散点图。下面是一个班轮。

x, y = list(zip(*[[a, b] for a in dic for b in dic[a]]))
plt.scatter(x, y)

推荐阅读