Matplotlib: linewidth is added to the length of a line
Question: When I draw a line segment in matplotlib the linewidth seems to be added to
the length of the line. Below my code (not the most pythonic code, but it
should do the trick). Am I doing something wrong or is this just a feature of
matplotlib?

    
    
    import matplotlib.pyplot as plt
    import numpy as np
    L1=100
    L2=75
    L3=100
    Y=3
    N=5
    l_prev=0
    for l,c in zip(np.linspace(0,L1,N),range(N)) :
        plt.plot([l_prev,l],[0,0],'r',linewidth=20)
        l_prev=l
    l_prev=L1
    for l,c in zip(np.linspace(L1,L1+L2,N),range(N)) :
        plt.plot([l_prev,l],[Y,Y],'g',linewidth=1)
        l_prev=l
    l_prev=L1
    for l,c in zip(np.linspace(L1,L1+L3,N),range(N)) :
        p = plt.plot([l_prev,l],[-Y,-Y],'b',linewidth=10)
        l_prev=l
    plt.axvspan(xmin=L1,xmax=L1)
    plt.axis([-5,205,-5,5])
    plt.show()
    

What I expected to see is three line segments: `[0,L1], [L1,L2] and [L1,L3]`.
But the first line `[0,L1]` extends to `L1` \+ 'the diameter'....


Answer: It looks like the default `solid_capstyle` is `projecting`, which isn't the
one you want:

    
    
    plt.figure()
    plt.plot([0, 100], [5, 5], linewidth=50, linestyle="-", c="blue",
             solid_capstyle="butt")
    plt.plot([0, 100], [15, 15], linewidth=50, linestyle="-", c="red",
             solid_capstyle="round")
    plt.plot([0, 100], [25, 25], linewidth=50, linestyle="-", c="purple",
             solid_capstyle="projecting")
    plt.axvline(x=100, c="black")
    plt.xlim(0, 125)
    plt.ylim(0, 30)
    plt.savefig("cap.png")
    

![enter image description here](http://i.stack.imgur.com/bHIub.png)

