首页 > 解决方案 > 使大型数据集的散点图成为可能 - Python

问题描述

我有一个已存储为 2D 列表的数据集,如下所示:

[[72,72,72,83,83,83,63,63]
[72,72,72,72,72,83,83,63,63,63,63,63]
[72,72,72,72,72,83,63,63,63,63,63,78,78]
[72,72,72,83,83,83,83,63,63,78,78,72,72,72]
[72,72,72,78,78,83,83,83,63,63]]

每个子列表都有不同的长度,并且在随机位置包含重复值(即上面示例数据集中的 72、83、63、78)。我想看看是否有一种模式,例如,72 可能在开始时显示,或者 83 总是出现在中间,等等。我一直试图在散点图中绘制数据,这些唯一值作为不同的颜色(像这样的东西)。

在此处输入图像描述 这是我的代码:

fig, ax = plt.subplots()
##get color dictionary
base_color=['b','c','k','g','m','w','r','y']
unique_input = set(i for j in new_input_number for i in j)
label_dict={}
for key,value in zip(unique_input,base_color[0:len(unique_input)]):
    label_dict[key]=value
legend_dict={}
for value in unique_input:
    legend_dict[value]=value

rows=len(new_input_number)
seen=set()
for i in range(1,rows):
    x=range(0,len(new_input_number[i]))
    y = i * np.ones(len(new_input_number[i]))
    label=tuple(new_input_number[i])
    for x,y,label in zip(x,y,label):
        ax.scatter(x, y, s=0.1, c=label_dict.get(label), label=legend_dict.get(label) if label not in seen else None)
        seen.add(label)

plt.legend()
plt.show()

这段代码的问题是它只适用于小数据集,即 5x100,但不适用于大数据集,1000*200。

我非常感谢有关如何使其接受大型数据集或任何有关可视化的建议的帮助。

谢谢,

标签: pythonmatplotlib

解决方案


推荐阅读