Matplotlib Legend Guide basic examples

后端 未结 2 1605
粉色の甜心
粉色の甜心 2020-12-17 03:37

I am trying to understand how to use the legend() better, specifically how to use proxy artists. I find the Legend guide to be severely lacking. This post is somewhat simila

相关标签:
2条回答
  • 2020-12-17 03:59

    I'm still using matplotlib 1.2.1 so I'll tell you what works for me. I find that if I pass the line objects to legend(), I also have to pass the labels separately. [This is also consistent with the matplotlib documentation on legened()]. I've modified your example slightly to do this, and it seems to work:

    import matplotlib.patches as mpatches
    import matplotlib.lines as mlines
    import matplotlib.pyplot as plt
    
    line_up, = plt.plot([1,2,3], label='Line 2')
    line_down, = plt.plot([3,2,1], label='Line 1')
    
    blue_line = mlines.Line2D([], [], color='blue', marker='*',
                      markersize=15, label='Blue stars')
    red_patch = mpatches.Patch(color='red', label='The red data')
    
    lines = [blue_line, red_patch]
    labels = [line.get_label() for line in lines]
    plt.legend(lines, labels)
    
    plt.show()
    

    code output

    0 讨论(0)
  • 2020-12-17 04:14

    The Legend Guide was rewritten to be compatible with matplotlib version 1.4.0 or newer. Your version of matplotlib (1.2.1) is over two years old. Don't be surprised if everything shown in the docs does not work with such an old version.

    If you upgrade your version, then using

    plt.legend(handles=[red_patch,blue_line])
    

    (as is shown in the Legend Guide) instead of

    plt.legend([red_patch,blue_line])
    

    yields

    enter image description here

    0 讨论(0)
提交回复
热议问题