Matplotlib: draw lines with width given in data coordinates

后端 未结 2 2026
别跟我提以往
别跟我提以往 2021-02-09 04:36

I\'m trying to figure out how to draw lines with widths in data units. For example, in the following code snippet, I would want the horizontal part of the line of width 80 to al

相关标签:
2条回答
  • 2021-02-09 04:47

    You could use fill_between:

    import matplotlib.pyplot as plt
    import numpy as np
    
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.set_xlim(-50, 50)
    ax.set_ylim(-75, 75)
    x = [-50, 0, 50]
    y = np.array([-50, 0, 0])
    
    ax.fill_between(x,y-30,y+30)
    
    ax.grid()
    plt.show()
    

    yields

    enter image description here

    but unlike the line generated by

    ax.add_line(Line2D([-50, 0, 50], [-50, 0, 0], linewidth=80))
    

    the vertical thickness of the line will always be constant in data coordinates.

    See also link to documentation.

    0 讨论(0)
  • 2021-02-09 04:54

    In order to draw a line with the linewidth in data units, you may want to have a look at this answer.

    It uses a class data_linewidth_plot which closely resembles the plt.plot() command's signature.

    l = data_linewidth_plot( x, y, ax=ax, label='some line', linewidth = 1, alpha = 0.4)
    

    The linewidth argument is interpreted in (y-)data units.

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