2013-07-10 11 views
5

मैं matplotlib का उपयोग कर कुछ रैखिक असमानता कार्यों से घिरे क्षेत्र को कैसे आकर्षित कर सकता हूं।पायथन Matplotlib: ड्राइंग रैखिक असमानता कार्य

उदाहरण के लिए, हम 3 कार्य करता है, तो: y < = -2 + 4x, वाई> = 2 + 0.5x, वाई < = 7 -0.3x

मैं चाहते हैं किसी चीज़ आकर्षित करने के लिए समान रूप Wolfram अल्फा करता है: http://www3.wolframalpha.com/Calculate/MSP/MSP43251aca1dfd6ebcd862000067b9fd36a79h3igf?MSPStoreType=image/gif&s=39&w=200.&h=210.&cdf=Coordinates&cdf=Tooltips

+2

तो, तुम क्या करने की कोशिश की है? क्या आपने गैलरी को देखा? मुझे लगता है कि 'fill_between' आपको जो भी चाहिए वो करने देगा ... http://matplotlib.org/examples/pylab_examples/fill_between_demo.html – tacaswell

उत्तर

10

मैंने एक बहुत ही सरल उदाहरण लिखा, केवल आपकी समस्या के लिए मान्य है, लेकिन इसे आसानी से विस्तारित करना और इसे सामान्य बनाना है। वांछित बहुभुज बनाने के लिए जड़ों को खोजने की समस्या को सरल बनाने के लिए सिम्पी का उपयोग करना एकमात्र चाल है। (http://docs.sympy.org/dev/modules/solvers/solvers.html से लिया)

import numpy as np 
import matplotlib.pyplot as plt 
from sympy.solvers import solve 
from sympy import Symbol 

def f1(x): 
    return 4.0*x-2.0 
def f2(x): 
    return 0.5*x+2.0 
def f3(x): 
    return -0.3*x+7.0 

x = Symbol('x') 
x1, = solve(f1(x)-f2(x)) 
x2, = solve(f1(x)-f3(x)) 
x3, = solve(f2(x)-f3(x)) 

y1 = f1(x1) 
y2 = f1(x2) 
y3 = f2(x3) 

plt.plot(x1,f1(x1),'go',markersize=10) 
plt.plot(x2,f1(x2),'go',markersize=10) 
plt.plot(x3,f2(x3),'go',markersize=10) 

plt.fill([x1,x2,x3,x1],[y1,y2,y3,y1],'red',alpha=0.5) 

xr = np.linspace(0.5,7.5,100) 
y1r = f1(xr) 
y2r = f2(xr) 
y3r = f3(xr) 

plt.plot(xr,y1r,'k--') 
plt.plot(xr,y2r,'k--') 
plt.plot(xr,y3r,'k--') 

plt.xlim(0.5,7) 
plt.ylim(2,8) 

plt.show() 

enter image description here

सादर

+0

धन्यवाद, यह वही है जो मुझे चाहिए :) – N10

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