PyPlot में रिवर्स वाई-एक्सिस


265

मेरे पास एक यादृच्छिक प्लॉट ग्राफ है जिसमें यादृच्छिक x, y निर्देशांक का एक गुच्छा है। वर्तमान में वाई-एक्सिस 0 से शुरू होता है और अधिकतम मूल्य तक जाता है। मैं चाहूंगा कि वाई-एक्सिस अधिकतम मूल्य पर शुरू हो और 0 तक जाए।

points = [(10,5), (5,11), (24,13), (7,8)]    
x_arr = []
y_arr = []
for x,y in points:
    x_arr.append(x)
    y_arr.append(y)
plt.scatter(x_arr,y_arr)

जवाबों:


556

एक नया एपीआई है जो इसे और भी सरल बनाता है।

plt.gca().invert_xaxis()

और / या

plt.gca().invert_yaxis()

49
इस बात से अवगत रहें कि आपको अक्ष को उलटने से पहले अक्ष की सीमा निर्धारित करनी होगी, अन्यथा यह इसे फिर से उलटा कर देगा।
TheBigH

55

विस्थापित का जवाब सही है, लेकिन आमतौर पर एक छोटी विधि सिर्फ एक धुरी को उलटने के लिए होती है:

plt.scatter(x_arr, y_arr)
ax = plt.gca()
ax.set_ylim(ax.get_ylim()[::-1])

जहाँ gca()फ़ंक्शन वर्तमान अक्ष को लौटाता है और [::-1]सूची को उलट देता है।


3
यह मेरे लिए एक बेहतर जवाब की तरह लगता है। :)
विस्थापित अस्सी

18

Matplotlib.pyplot.axis () का उपयोग करें

axis([xmin, xmax, ymin, ymax])

तो आप अंत में ऐसा कुछ जोड़ सकते हैं:

plt.axis([min(x_arr), max(x_arr), max(y_arr), 0])

यद्यपि आप प्रत्येक छोर पर पैडिंग करना चाहते हैं ताकि चरम बिंदु सीमा पर न बैठें।


इसके पहले दो उत्तरों में एक फायदा है कि यह ओरिएंटेशन को ठीक करता है, इसे हर बार फ्लिप नहीं करता है (जो एक मुद्दा है अगर आपको इसे लूप में कॉल करने की आवश्यकता है)।
बैस स्विंकल्स

16

यदि आप pylabमोड में ipython में हैं, तो

plt.gca().invert_yaxis()
show()

show()यह वर्तमान आंकड़ा अद्यतन बनाने के लिए आवश्यक है।


9

आप स्कैटर प्लॉट की एक्सिस ऑब्जेक्ट द्वारा उजागर फ़ंक्शन का भी उपयोग कर सकते हैं

scatter = plt.scatter(x, y)
ax = scatter.axes
ax.invert_xaxis()
ax.invert_yaxis()

8

उपरोक्त वर्णित एक अन्य समान विधि plt.ylimउदाहरण के लिए उपयोग करना है:

plt.ylim(max(y_array), min(y_array))

यह विधि मेरे लिए तब काम करती है जब मैं Y1 और / या Y2 पर कई डेटासेट कंपाउंड करने का प्रयास कर रहा हूं


3

ylim () का उपयोग करना आपके उद्देश्य के लिए सबसे अच्छा तरीका हो सकता है:

xValues = list(range(10))
quads = [x** 2 for x in xValues]
plt.ylim(max(quads), 0)
plt.plot(xValues, quads)

परिणाम होगा:यहां छवि विवरण दर्ज करें


2

वैकल्पिक रूप से, आप matplotlib.pyplot.axis () फ़ंक्शन का उपयोग कर सकते हैं , जो आपको प्लॉट अक्ष के किसी भी अयोग्य की अनुमति देता है

ax = matplotlib.pyplot.axis()
matplotlib.pyplot.axis((ax[0],ax[1],ax[3],ax[2]))

या यदि आप केवल एक्स-एक्सिस को उल्टा करना पसंद करते हैं, तो

matplotlib.pyplot.axis((ax[1],ax[0],ax[2],ax[3]))

वास्तव में, आप दोनों अक्ष को उलट सकते हैं:

matplotlib.pyplot.axis((ax[1],ax[0],ax[3],ax[2]))

0

अगर आप matplotlib का उपयोग कर सकते हैं: matplotlib.pyplot.xlim(l, r) matplotlib.pyplot.ylim(b, t)

ये दो पंक्तियाँ क्रमशः x और y कुल्हाड़ियों की सीमा निर्धारित करती हैं। एक्स अक्ष के लिए, पहला तर्क एल बाईं ओर सबसे अधिक मूल्य निर्धारित करता है, और दूसरा तर्क आर सही सबसे अधिक मूल्य निर्धारित करता है। Y अक्ष के लिए, पहला तर्क b नीचे सबसे अधिक मान सेट करता है, और दूसरा तर्क t सबसे अधिक मान सेट करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.