我有一个由N
子列表组成的主列表(此编号将针对不同的运行进行更改),每个列表包含x,y
个点对。我需要一种方法来绘制这些子列表中具有不同颜色的点,从列表中获取(通常)比子列表更少的元素。要做到这一点,我需要一种通过这个颜色列表循环的方法。这是我所追求的内容的摘录:
# Main list which holds all my N sub-lists.
list_a = [[x,y pairs], [..], [..], [..], ..., [..]]
# Plot sub-lists with colors taken from this list. I need the for block below
# to cycle through this list.
col = ['red', 'darkgreen', 'blue', 'maroon','red']
for i, sub_list in enumerate(list_a):
plt.scatter(sub_list[0], sub_list[1], marker='o', c=col[i])
如果len(col) < len(list_a)
(这将在大多数时间发生),这将返回错误。因为对于给定的代码运行,子列表的数量会有所不同,我无法将多种颜色硬编码到col
列表中,所以我需要一种方法来循环通过那个颜色列表。我怎么能这样做?
答案 0 :(得分:7)
IIUC,您可以使用itertools.cycle
,然后使用c=col[i]
代替next
。例如:
>>> from itertools import cycle
>>> cols = cycle(["red", "green", "blue"])
>>> next(cols)
'red'
>>> next(cols)
'green'
>>> next(cols)
'blue'
>>> next(cols)
'red'
答案 1 :(得分:4)
您可以使用模运算符
numberOfColors = len(col)
for i, sub_list in enumerate(list_a):
plt.scatter(sub_list[0], sub_list[1], marker='o', c=col[i % numberOfColors])