unique plot marker for each plot in matplotlib

前端 未结 5 2135
走了就别回头了
走了就别回头了 2021-01-03 18:04

I have a loop where i create some plots and I need unique marker for each plot. I think about creating function, which returns random symbol, and use it in my program in thi

5条回答
  •  南笙
    南笙 (楼主)
    2021-01-03 18:25

    itertools.cycle will iterate over a list or tuple indefinitely. This is preferable to a function which randomly picks markers for you.

    Python 2.x

    import itertools
    marker = itertools.cycle((',', '+', '.', 'o', '*')) 
    for n in y:
        plt.plot(x,n, marker = marker.next(), linestyle='')
    

    Python 3.x

    import itertools
    marker = itertools.cycle((',', '+', '.', 'o', '*')) 
    for n in y:
        plt.plot(x,n, marker = next(marker), linestyle='')
    

    You can use that to produce a plot like this (Python 2.x):

    import numpy as np
    import matplotlib.pyplot as plt
    import itertools
    
    x = np.linspace(0,2,10)
    y = np.sin(x)
    
    marker = itertools.cycle((',', '+', '.', 'o', '*')) 
    
    fig = plt.figure()
    ax = fig.add_subplot(111)
    
    for q,p in zip(x,y):
        ax.plot(q,p, linestyle = '', marker=marker.next())
        
    plt.show()
    

    Example plot

提交回复
热议问题