gpt4 book ai didi

python - Matplotlib 绘图生成器

转载 作者:太空宇宙 更新时间:2023-11-04 03:26:54 25 4
gpt4 key购买 nike

当我这样做时它会绘制(在 Python 3 中):

import matplotlib.pyplot as plt

a = [1,2,3,4,5]

plt.plot(range(5), a)
plt.show()

据我所知,在 Python 3 中,range() 返回一个迭代器,所以我上面的代码几乎都是在迭代器上绘制的。现在我的问题是,为什么我做不到:

def myGen(iterable):
for i in iterable:
yield i
a = myGen([1,2,3,4,5])
plt.plot(range(5),a)
plt.show()

当我尝试这个时,我得到 ValueError: x and y must have same first dimension

仔细想想,想要绘制两个生成器是有道理的。只是逐点绘制。这在 matplotlib 中可能吗?

我知道 there is a similar thread , 遗憾的是没有答案。

最佳答案

问题在于,即使 Python 3 中的 range 不是真正的列表,它仍然提供比您的自定义生成器更多的功能。特别是,它提供了 __len__。这是至关重要的,因为 matplotlib 会在后台将所有内容转换为 numpy 数组,而 numpy 数组需要预先知道它们的大小。 Python 3 范围对象也提供项目访问,所以它们真的很像普通序列。你可以在the documentation中看到它们不是简单的生成器。

我不确定您需要做些什么才能使您自己的自定义类在这里工作,但这可能比它的值(value)更麻烦。 Matplotlib 需要能够将您的数据转换为 numpy 数组,而 numpy 反过来需要比简单的“此对象可迭代”更多的信息。它需要能够知道有多少数据并立即获取所有数据。

关于python - Matplotlib 绘图生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com