2012-04-24 8 views
22

की लंबाई में जोड़ा जाता है जब मैं 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 + 'व्यास' तक फैली हुई ....

उत्तर

50

यह डिफ़ॉल्ट solid_capstyleprojecting है, जो एक तुम चाहते हो नहीं है जैसा दिखता है:

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

महान। वास्तव में मैं क्या चाहता था! – user989762

+0

+1 को 'solid_capstyle' से अवगत नहीं था – bmu