পাইপ্লট-এ বিপরীত ওয়াই-অ্যাক্সিস


265

আমার কাছে এলোমেলো x, y স্থানাঙ্কের একটি গুচ্ছ সহ একটি স্কেটার প্লট গ্রাফ রয়েছে। বর্তমানে 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মোডে আইপথনে থাকেন , তবে

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

ইলিম () ব্যবহার করা আপনার উদ্দেশ্যটির জন্য সেরা পন্থা হতে পারে:

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.pyplot.xlim(l, r) matplotlib.pyplot.ylim(b, t)

এই দুটি লাইন যথাক্রমে x এবং y অক্ষের সীমা নির্ধারণ করে। এক্স অক্ষের জন্য, প্রথম আর্গুমেন্ট l বাম সর্বাধিক মান নির্ধারণ করে, এবং দ্বিতীয় আর্গুমেন্টটি সবচেয়ে সর্বাধিক মান নির্ধারণ করে। Y অক্ষের জন্য, প্রথম যুক্তি বি নীচে সর্বাধিক মান নির্ধারণ করে, এবং দ্বিতীয় আর্গুমেন্ট টি শীর্ষ সর্বাধিক মান নির্ধারণ করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.