मैं Matplotlib में फॉर्म एफ (एक्स, वाई) = जी (एक्स, वाई) उदाहरण एक्स^वाई = वाई^एक्स) के अंतर्निहित समीकरणों को साजिश करना चाहता हूं। क्या यह संभव है?Matplotlib का उपयोग करके अंतर्निहित समीकरणों को साजिश करना संभव है?
उत्तर
मैं इसके लिए बहुत अच्छा समर्थन है पर विश्वास नहीं है, लेकिन आप contour
के लिए API docs देखें
import matplotlib.pyplot
from numpy import arange
from numpy import meshgrid
delta = 0.025
xrange = arange(-5.0, 20.0, delta)
yrange = arange(-5.0, 20.0, delta)
X, Y = meshgrid(xrange,yrange)
# F is one side of the equation, G is the other
F = Y**X
G = X**Y
matplotlib.pyplot.contour(X, Y, (F - G), [0])
matplotlib.pyplot.show()
की तरह कुछ की कोशिश कर सकते हैं: अगर चौथा तर्क एक दृश्य तो यह निर्दिष्ट करता है जो समोच्च पंक्तियों प्लॉट करने के लिए है । लेकिन साजिश केवल आपकी श्रेणियों के संकल्प के रूप में उतनी ही अच्छी होगी, और कुछ विशेषताओं को कभी भी सही नहीं मिल सकता है, अक्सर स्वयं-छेड़छाड़ बिंदुओं पर।
matplotlib समीकरणों को साजिश नहीं देता है; यह अंक की श्रृंखला plots। आप scipy.optimize
जैसे टूल का उपयोग कर सकते हैं ताकि संख्यात्मक मानों के x मानों (या इसके विपरीत) से संख्यात्मक रूप से गणना की जा सके या संख्यात्मक रूप से अन्य टूल की संख्या।
उदाहरण के लिए, यहाँ एक उदाहरण है जहां मैं एक निश्चित क्षेत्र में निहित समीकरण x ** 2 + x * y + y ** 2 = 10
साजिश है।
from functools import partial
import numpy
import scipy.optimize
import matplotlib.pyplot as pp
def z(x, y):
return x ** 2 + x * y + y ** 2 - 10
x_window = 0, 5
y_window = 0, 5
xs = []
ys = []
for x in numpy.linspace(*x_window, num=200):
try:
# A more efficient technique would use the last-found-y-value as a
# starting point
y = scipy.optimize.brentq(partial(z, x), *y_window)
except ValueError:
# Should we not be able to find a solution in this window.
pass
else:
xs.append(x)
ys.append(y)
pp.plot(xs, ys)
pp.xlim(*x_window)
pp.ylim(*y_window)
pp.show()
आप matplotlib के अलावा कुछ (लेकिन अभी भी अजगर) का उपयोग करने के लिए तैयार कर रहे हैं, वहाँ ऋषि:
एक उदाहरण: http://sagenb.org/home/pub/1806
कई धन्यवाद स्टीव, माइक, एलेक्स। मैं स्टीव के समाधान के साथ चला गया है (कृपया नीचे कोड देखें)। मेरा एकमात्र शेष मुद्दा यह है कि एक नियमित साजिश के विपरीत, मेरी ग्रिडलाइन के पीछे समोच्च साजिश दिखाई देती है, जिसे मैं ज़ॉर्डर के साथ आगे बढ़ सकता हूं। किसी और हल्प की सराहना की।
चीयर्स, Geddes
import matplotlib.pyplot as plt
from matplotlib.ticker import MultipleLocator, FormatStrFormatter
import numpy as np
fig = plt.figure(1)
ax = fig.add_subplot(111)
# set up axis
ax.spines['left'].set_position('zero')
ax.spines['right'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
# setup x and y ranges and precision
x = np.arange(-0.5,5.5,0.01)
y = np.arange(-0.5,5.5,0.01)
# draw a curve
line, = ax.plot(x, x**2,zorder=100)
# draw a contour
X,Y=np.meshgrid(x,y)
F=X**Y
G=Y**X
ax.contour(X,Y,(F-G),[0],zorder=100)
#set bounds
ax.set_xbound(-1,7)
ax.set_ybound(-1,7)
#produce gridlines of different colors/widths
ax.xaxis.set_minor_locator(MultipleLocator(0.2))
ax.yaxis.set_minor_locator(MultipleLocator(0.2))
ax.xaxis.grid(True,'minor',linestyle='-')
ax.yaxis.grid(True,'minor',linestyle='-')
minor_grid_lines = [tick.gridline for tick in ax.xaxis.get_minor_ticks()]
for idx,loc in enumerate(ax.xaxis.get_minorticklocs()):
if loc % 2.0 == 0:
minor_grid_lines[idx].set_color('0.3')
minor_grid_lines[idx].set_linewidth(2)
elif loc % 1.0 == 0:
minor_grid_lines[idx].set_c('0.5')
minor_grid_lines[idx].set_linewidth(1)
else:
minor_grid_lines[idx].set_c('0.7')
minor_grid_lines[idx].set_linewidth(1)
minor_grid_lines = [tick.gridline for tick in ax.yaxis.get_minor_ticks()]
for idx,loc in enumerate(ax.yaxis.get_minorticklocs()):
if loc % 2.0 == 0:
minor_grid_lines[idx].set_color('0.3')
minor_grid_lines[idx].set_linewidth(2)
elif loc % 1.0 == 0:
minor_grid_lines[idx].set_c('0.5')
minor_grid_lines[idx].set_linewidth(1)
else:
minor_grid_lines[idx].set_c('0.7')
minor_grid_lines[idx].set_linewidth(1)
plt.show()
@Geddes, ऐसा लगता है कि समोच्च सम्मान ज़ेडर के लिए समर्थन हाल ही में matplotlib स्रोत में जोड़ा गया है। उनके एसवीएन ट्रंक से: http://matplotlib.svn.sourceforge.net/viewvc/matplotlib?देखें = rev & revision = 8098 – Mark
आप sympy के साथ इस सवाल टैग किया है के बाद से, मैं इस तरह के एक उदाहरण दे देंगे।
प्रलेखन से: http://docs.sympy.org/modules/plotting.html।
from sympy import var, Plot
var('x y')
Plot(x*y**3 - y*x**3)
ऐसा लगता है कि नया वाक्यविन्यास 'plot_implicit (eq (x ** 5 + y ** 5, 1)) है, और नया दस्तावेज़ लिंक [यहां है] (http: //docs.sympy .org/नवीनतम/मॉड्यूल/plotting.html)। –
सिम्पी में एक अंतर्निहित समीकरण (और असमानता) प्लॉटटर है। यह जीएसओसी के एक हिस्से के रूप में बनाया गया है और यह भूखंडों को matplotlib आकृति उदाहरण के रूप में पैदा करता है। http://docs.sympy.org/latest/modules/plotting.html#sympy.plotting.plot_implicit.plot_implicit
पर
डॉक्स sympy संस्करण 0.7.2 यह उपलब्ध है के रूप में के बाद से:
>>> from sympy.plotting import plot_implicit
>>> p = plot_implicit(x < sin(x)) # also creates a window with the plot
>>> the_matplotlib_axes_instance = p._backend._ax
ऐसा लगता है कि यह अब जारी किया गया है। :) –
आपका 'the_matplotlib_axes_instance' कहां से आ रहा है? – theV0ID
'पी' आपके द्वारा बनाई गई साजिश है। 'p._backend._ax' धुरी उदाहरण होगा और यदि आप चाहें तो आप इसे एक नए चर में संदर्भित कर सकते हैं और किसी भी matplotlib अक्ष उदाहरण का उपयोग करने के लिए इसका उपयोग कर सकते हैं। – Krastanov
- 1. क्या Matplotlib imshow() का उपयोग करके ध्रुवीय साजिश के रूप में 2 डी सरणी प्रदर्शित करना संभव है?
- 2. अंतर्निहित समीकरणों को कैसे प्लॉट करें
- 3. matplotlib
- 4. कैसे एक साजिश matplotlib
- 5. matplotlib: समय-श्रृंखला साजिश
- 6. matplotlib साजिश और imshow
- 7. matplotlib में स्टेम साजिश?
- 8. मैं matplotlib का उपयोग करके साजिश के xtick लेबल कैसे सरल चित्र बना सकता हूं?
- 9. क्या jQuery का उपयोग करके पीडीएफ उत्पन्न करना संभव है?
- 10. क्या अनाम प्रकार का उपयोग करके डेटाबेस करना संभव है?
- 11. , एक matplotlib 3 डी साजिश
- 12. matplotlib: एक लॉग-लॉग साजिश
- 13. Matplotlib के साथ साजिश क्यों धीमी है?
- 14. matplotlib में तीरों के साथ रेखा साजिश
- 15. क्या डाउनलोडमैनेजर का उपयोग करके डाउनलोड को रद्द करना/बंद करना संभव है?
- 16. समीकरणों
- 17. matplotlib: एक "बिखराव/डॉट/beeswarm" साजिश
- 18. Matplotlib yaxis रेंज ऑफ़सेट मानों के बजाय पूर्ण मूल्यों का उपयोग करके प्रदर्शित करता है?
- 19. क्या PHP का उपयोग करके आरएसएस फ़ीड में प्रमाणीकरण का उपयोग करना संभव है?
- 20. प्रतिक्रिया ऑब्जेक्ट्स का उपयोग किए बिना जेएक्स-आरएस का उपयोग करके ईटैग सेट करना संभव है?
- 21. matplotlib के साथ एक मानचित्र पर एक छवि की साजिश संभव है?
- 22. क्या आईपी एड्रेस प्राप्त करके सॉकेट का उपयोग करके दो आईओएस डिवाइस कनेक्ट करना संभव है?
- 23. क्या MATLAB साजिश लेबल में यूनिकोड प्रदर्शित करना संभव है?
- 24. पायथन matplotlib - contour साजिश - आत्मविश्वास अंतराल
- 25. पायथन का उपयोग करके nonlinear समीकरणों की एक जोड़ी को हल करने के लिए कैसे?
- 26. Matplotlib: रिमोट मशीन पर प्रदर्शित साजिश
- 27. अजगर (matplotlib) में वेक्टर क्षेत्रों साजिश
- 28. सबक्वायरी का पुन: उपयोग करना संभव है?
- 29. क्या LINQPad में LINQ का उपयोग करके संग्रहीत प्रक्रिया को कॉल करना संभव है?
- 30. प्रीप्रोसेसर (मैक्रोज़) का उपयोग करके सी स्ट्रिंग अक्षर को अपरकेस में परिवर्तित करना संभव है?
यह एक अच्छा उपाय है। मेरा समाधान एक ही अंतर्निहित अवधारणा का उपयोग करके सूचना के एक ही टुकड़े को प्राप्त करने का एक और अधिक मैन्युअल तरीका है: एफ (एक्स, वाई) के रूप में अंतर्निहित समीकरण स्थापित करना जैसे कि एफ (एक्स, वाई) = 0 मूल निहित समीकरण के बराबर है और इसके शून्य समोच्च को अलग करना। –