在matplotlib

时间:2018-10-31 22:17:17

标签: python 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()

enter image description here

但是目前,我有一个大小不一的列表列表,像这样:

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),但是我是看得到这样的东西:

enter image description here

我如何获得这种情节?

2 个答案:

答案 0 :(得分:3)

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

-lboost_log_setup -lboost_log

输出 enter image description here

答案 1 :(得分:1)

您快要接近了。您可以使用单个循环如下绘制各个列表。 lst一次将成为一个子列表,并且 [i]*len(lst)将为该子列表生成x数据点的数量。

for i, lst in enumerate(a):
    plt.scatter([i]*len(lst), lst,  color='r')
plt.xlabel("Interval")
plt.ylabel("Value")

https://www.elastic.co/guide/en/elasticsearch/reference/6.4/indices-templates.html