如何获取 matplotlib 中所有标记的列表?

How to obtain a list of all markers in matplotlib?

我生成的图表有很多线条,我想自动使用颜色和标记来区分它们。

我试过这个:

for i,studyDframeTuple in enumerate(studyDframeTuples):
    time  = studyDframeTuple[1]['time']
    error = studyDframeTuple[1]['Linf velocity error']
    caseName = studyDirs[studyDframeTuple[0]]
    ax.plot(time, error, marker = i % 12, label=caseName) 

在 (0,11) 上循环 marker。这种作品,因为某些原因marker < 12。当我使用 marker = i % 20 时,出现 makerstyle 12 is unknown 错误。

这是我正在生成的图表示例,它并不漂亮,仅用于检查测试结果:

这些图表是通过不同参数的测试得出的,因此需要遍历所有可用的颜色、线条样式和标记,以确保当我在图表上有 100 条线时,我可以区分那些属于到分解的解决方案(此图上的值如 1e15)。

如何将 matplotib 中的所有标记放入列表中并对其进行迭代?

编辑

我像这样破解了自己的列表

mStyles = [".",",","o","v","^","<",">","1","2","3","4","8","s","p","P","*","h","H","+","x","X","D","d","|","_",0,1,2,3,4,5,6,7,8,9,10,11
]

但是什么时候发生变化呢?我可以从 matplotlib 以编程方式获取此列表吗?

12 不作为标记值存在。您可以使用此命令获得所有现有标记的字典:

from matplotlib.lines import Line2D
print(Line2D.markers)

输出:

{'.': 'point',
 ',': 'pixel',
 'o': 'circle',
 'v': 'triangle_down',
 '^': 'triangle_up',
 '<': 'triangle_left',
 '>': 'triangle_right',
 '1': 'tri_down',
 '2': 'tri_up',
 '3': 'tri_left',
 '4': 'tri_right',
 '8': 'octagon',
 's': 'square',
 'p': 'pentagon',
 '*': 'star',
 'h': 'hexagon1',
 'H': 'hexagon2',
 '+': 'plus',
 'x': 'x',
 'D': 'diamond',
 'd': 'thin_diamond',
 '|': 'vline',
 '_':'hline',
 'P': 'plus_filled',
 'X': 'x_filled',
 0: 'tickleft',
 1: 'tickright',
 2: 'tickup',
 3:'tickdown',
 4: 'caretleft',
 5: 'caretright',
 6: 'caretup',
 7: 'caretdown',
 8: 'caretleftbase',
 9: 'caretrightbase',
 10: 'caretupbase',
 11: 'caretdownbase',
 'None': 'nothing',
 None: 'nothing',
 ' ': 'nothing',
 '': 'nothing'}