我有一堆线(总共超过50条)将出现在多个图中,并且我想使用许多标记来存储它们。 {,matplotlib
中标记的数量被限制为行数超过了该数量。在花了一个小时在这里寻找答案之后,我发现itertools.cycle
是潜在的解决方案,因为它可以让我循环浏览一系列文章。举例来说,我想循环显示五个标记:
import itertools
markers = itertools.cycle(('o', 'D', '*', 'X', '+'))
但是,我很快意识到将循环限制为一定数量(即行数)并将其存储在列表中的必要性,因为这些行将出现在多个图中,并且我希望标记保持一致。我遇到了另一个问题(Is there an elegant way to cycle through a list N times via iteration (like itertools.cycle but limit the cycles)?),该问题似乎可以通过以下方式解决我的部分问题:
import itertools
n = 50 # number of lines
itertools.chain.from_iterable(itertools.repeat(['o', 'D', '*', 'X', '+'], n))
所以,现在我只需要找出问题的存储部分即可。
如果itertools
不是最方便的方法,那么如果有人可以将我指向更方便的方向,我将不胜感激。
答案 0 :(得分:1)
因为itertools.chain是一个可迭代的对象,所以我只是在itertools.chain.from_iterable构造函数的结果上运行列表函数,如下所示:
import itertools
n = 50 # number of lines
list(itertools.chain.from_iterable(itertools.repeat(['o', 'D', '*', 'X', '+'], n)))
并在列表中得到结果。该列表的长度为250,因为它在整个系列中进行了50次迭代。
我希望这会有所帮助。
编辑:
当然,如果要使用列表,只需将变量设置为结果,如下所示:
var_name = list(itertools.chain.from_iterable(itertools.repeat(['o', 'D', '*', 'X', '+'], n)))