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'....
The line width simply helps to give a unique description or visual to a particular data set in a plot. The default value for the line width of a plot in Matplotlib is 1 . However, you can change this size to any size of your choice.
In matplotlib, if you want to draw a horizontal line with full width simply use the axhline() method. You can also use the hlines() method to draw a full-width horizontal line but in this method, you have to set xmin and xmax to full width.
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")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With