2012-04-24 13 views
22

Matplotlib'de bir çizgi kesimi çizdiğimde, çizgi genişliğinin çizgi uzunluğuna eklendiği görünüyor. Kodumun altında (en pythonik kod değil, ama hile yapmalı). Yanlış bir şey mi yapıyorum yoksa bu sadece matplotlib'in bir özelliği mi? [0,L1], [L1,L2] and [L1,L3]: Anlıyorum bekleniyor neMatplotlib: linewidth satırın uzunluğuna eklenir

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() 

üç çizgi parçası olduğunu. Ama ilk satır [0,L1] .... L1 + 'çap' kadar uzanır

cevap

50

İstediğin biri değil solid_capstyleprojecting olduğu varsayılan, benzer:

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

+0

Harika. Tam olarak ne istedim! – user989762

+0

+1, solid_capstyle'in farkında değil – bmu