首页 > 解决方案 > 在 matplotlib 中绘制不同列大小数组的一维数组

问题描述

鉴于此,我有 x 和 y 数组,我可以轻松绘制点,如下所示:

a = np.arange(10).reshape(5, 2)

plt.scatter(a.T[0], a.T[1])
plt.xlabel("Interval")
plt.ylabel("Value")
plt.show()

在此处输入图像描述

但目前,我有一个大小不一的列表列表,如下所示:

a = [
    [0, 1, 3],
    [4, 2],
    [1, 4, 7, 2],
    [2],
    [3, 4, 5, 6]
]

plt.scatter(a, list(range(len(a))))
plt.xlabel("Interval")
plt.ylabel("Value")
plt.show()

但是,这会产生一个错误:使用序列设置数组元素,当尺寸不固定且大小不相等时肯定会这样做((dimen)x!=(dimen)y),但我正在寻找类似的东西:

在此处输入图像描述

我怎样才能获得那种情节?

标签: pythonmatplotlib

解决方案


您可以创建要手动绘制的数据:

import numpy as np
import matplotlib.pyplot as plt

a = np.array([
    [0, 1, 3],
    [4, 2],
    [1, 4, 7, 2],
    [2],
    [3, 4, 5, 6]

])

data = np.array([[x, y] for x, ys in enumerate(a) for y in ys])

plt.scatter(data[:, 0], data[:, 1], c='red')
plt.xlabel("Interval")
plt.ylabel("Value")
plt.show()

输出 在此处输入图像描述


推荐阅读