2013-05-07 13 views
20

मैं matplotlib.pyplot में 3 लाइनों को भरना चाहता हूं लेकिन दुर्भाग्यवश fill_between मुझे केवल दो पंक्तियों के बीच भरने का मौका देता है। किसी भी विचार से निपटने के लिए कैसे?Matplotlib एकाधिक लाइनों के बीच भरें

संपादित करें:

ठीक है, मैं समझाता नहीं था क्या मैं वास्तव में के बाद से मैं नहीं चित्र मेरे वर्तमान प्रतिष्ठा के साथ तो हो सकता है कि रास्ते में जोड़ सकते हैं मतलब है:

मैं बहुभुज इन पंक्तियों से घिरा भरने के लिए कोशिश और मुझे नहीं पता कि कैसे fill_between मुझे उनमें से दो के बीच केवल क्षेत्र भरने का मौका देता है। भरने समीकरण के नीचे:

y <= 4- 2x 
y <= 3 - 1/2x 
y <= 1 - x 
y >= 0 
x >= 0 

एक्स और वाई 0 से बड़ा स्पष्ट है। मैं (0,0) से साजिश शुरू लेकिन मैं अभी भी, 3 लाइनों ...

y <= 4- 2x 
y <= 3 - 1/2x 
y <= 1 - x 
+4

आप सवाल विस्तृत और कुछ नकली डेटा और/या क्या आप –

उत्तर

27

यदि आप बिंदु (0, 0) में साजिश शुरू करते हैं, और वहां सामने है, तो यह इस विशेष स्थिति में चाल करना चाहिए पहली वृत्त का चतुर्थ भाग में नहीं बहुभुज के क्षेत्र पर विचार करने की जरूरत नहीं है:

import matplotlib.pyplot as plt 
import numpy as np 

x = np.arange(0,10,0.1) 

# The lines to plot 
y1 = 4 - 2*x 
y2 = 3 - 0.5*x 
y3 = 1 -x 

# The upper edge of polygon (min of lines y1 & y2) 
y4 = np.minimum(y1, y2) 

# Set y-limit, making neg y-values not show in plot 
plt.ylim(0, 5) 

# Plotting of lines 
plt.plot(x, y1, 
     x, y2, 
     x, y3) 

# Filling between line y3 and line y4 
plt.fill_between(x, y3, y4, color='grey', alpha='0.5') 
plt.show() 

enter image description here

+0

यह वही है जो मैं खोज रहा हूं। बहुत बहुत धन्यवाद! – Magnar

17

fill_between का उपयोग करने के पहले एक्स मान निर्दिष्ट की तुलना में दो Y सेट है कि आप "के बीच भरने" करना चाहते हैं।

plt.fill_between(X, Y2,Y3,color='m',alpha=.5) 

यह आप

enter image description here

देना होगा:

import pylab as plt 
import numpy as np 

X = np.linspace(0,3,200) 
Y1 = X**2 + 3 
Y2 = np.exp(X) + 2 
Y3 = np.cos(X) 

plt.plot(X,Y1,lw=4) 
plt.plot(X,Y2,lw=4) 
plt.plot(X,Y3,lw=4) 

plt.fill_between(X, Y1,Y2,color='k',alpha=.5) 
plt.fill_between(X, Y1,Y3,color='y',alpha=.5) 

plt.show() 

enter image description here

, तो इसके बजाय, आप केवल Y2 और Y3 के बीच भरने के लिए चाहते थे: एक उदाहरण नीचे शो है

+0

ध्यान दें कि यह जवाब पर आधारित है प्राप्त करने के लिए चाहते हैं का एक उदाहरण प्रदान कर सकते हैं मूल प्रश्न पोस्ट किया गया, _before_ संपादन। – Hooked

4

बस बहुभुज, यानी के कोने अंक की गणना , वे बिंदु जहां रेखाएं छेड़छाड़ करती हैं। फिर pyplot.fill का उपयोग करके बहुभुज प्लॉट करें।

उदाहरण:

import matplotlib.pyplot as plt 

# define corner points 
x = [1,2,1,0] 
y = [2,1,0,1] 

# plot 
plt.fill(x,y) 
plt.show() 

जिसके परिणामस्वरूप छवि: Figure 1

संबंधित मुद्दे