Matplotlib: ширина линии добавляется к длине строки
Когда я рисую сегмент линии в matplotlib, ширина линии добавляется к длине строки. Ниже моего кода (не самый пифонический код, но он должен сделать трюк). Я что-то делаю неправильно или это просто функция 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()
Я ожидал увидеть три линейных сегмента: [0,L1], [L1,L2] and [L1,L3]
. Но первая строка [0,L1]
продолжается до L1
+ 'диаметра "....
Ответы
Ответ 1
Похоже, что по умолчанию solid_capstyle
есть projecting
, который не тот, который вам нужен:
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]()