matplotlib এ y- অক্ষ সীমা নির্ধারণ


416

Matplotlib এ y- অক্ষের সীমা নির্ধারণে আমার সহায়তা দরকার। এখানে কোডটি আমি চেষ্টা করেছি, ব্যর্থ।

import matplotlib.pyplot as plt

plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues,plotDataPrice[0], color = '#340B8C', 
     marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25,250))

এই প্লটের জন্য আমার কাছে থাকা ডেটা সহ, আমি 20 এবং 200 এর y- অক্ষ সীমা পেয়েছি। তবে আমি 20 এবং 250 এর সীমাটি চাই।


1
plt.show()প্লটটি দেখানোর জন্য আমি যদি শেষে যুক্ত করি তবে ম্যাটপ্ল্লোলিব 1.0.0 এর সাথে আমার জন্য কাজ করে। আপনি কোন সংস্করণ এবং কোন ব্যাকএন্ড ব্যবহার করছেন?
ট্যামস

14
ম্যাটপ্ল্লোলিব 0.98.5.2, পাইথন ২.on.২ এর সাথে আমার জন্য কাজ করছি। আমি উভয় চেষ্টা করেছিলাম plt.ylim((25,250))এবং plt.ylim(ymax = 250, ymin = 25)। আমি Aggব্যাকএন্ড ব্যবহার করছি ।
মনোজ গোবিন্দন

1
আপনাদের দুজনকেই ধন্যবাদ। এটি আপনার জন্য পিডিএফ ব্যাকএন্ডের সাথে কাজ করে?
কৌতূহলী 2 আগস্ট

1
দ্রষ্টব্য: axisbgএখন
অবচয় করা

উত্তর:


615

এটা চেষ্টা কর . সাবপ্লটগুলির জন্যও কাজ করে।

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])

201
বিটিডাব্লু, এটি একটি নির্বোধ সংক্ষেপণ এর অর্থ " জি এবং দ্য সি কর্নাল জেস"।
লেনার হোয়েট

32
আপনি এমন একটি মানও সেট করতে পারেন Noneযা গণনাটি axes.set_ylim([ymin,None])
ম্যাটপ্ল্লোব-এ

129

আপনার কোড আমার জন্যও কাজ করে। যাইহোক, আরেকটি কর্মসূচী হ'ল প্লটের অক্ষ পেতে এবং তারপরে কেবল y- মানগুলি পরিবর্তন করতে হবে:

x1,x2,y1,y2 = plt.axis()
plt.axis((x1,x2,25,250))


1
আপনি কেবল এক্স 1 এবং এক্স 2 সেট করতে পারবেন না।
হিল্কে ওয়ালিঙ্গা

78

আপনি যা করতে পারেন তা হ'ল matplotlib.pyplot.axis ব্যবহার করে নিজের অক্ষের পরিসরটি নিজের দ্বারা সেট করা।

matplotlib.pyplot.axis

from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])

0,10 এক্স অক্ষের ব্যাপ্তির জন্য। 0,20 y অক্ষের ব্যাপ্তির জন্য।

অথবা আপনি matplotlib.pyplot.xlim বা matplotlib.pyplot.ylim ব্যবহার করতে পারেন

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0,10)

24

আপনি যে কোনও বিষয় থেকে তাত্ক্ষণিকভাবে তা matplotlib.pyplot.axesকল করতে set_ylim()পারেন। এটি এমন কিছু হবে:

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])

16

এটি ম্যাটপ্ল্লোলিব সংস্করণ ২.২.২ এ কমপক্ষে কাজ করেছে:

plt.axis([None, None, 0, 100])

সম্ভবত এটি শুধুমাত্র xmin এবং ymax ইত্যাদির জন্য সেটআপ করার একটি দুর্দান্ত উপায় etc.


14

@ হিমার উত্তরে যুক্ত করতে, আপনি যদি কোনও বর্তমান x বা y সীমা পরিবর্তন করতে চান তবে আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন।

import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim)

আমি ডিফল্ট প্লট সেটিংস থেকে সামান্য জুম বা জুম করতে চাইলে আমি এটি বিশেষভাবে দরকারী বলে মনে করি।


7

এই কাজ করা উচিত. আপনার কোডটি আমার জন্য কাজ করে, যেমন ট্যামস এবং মনোজ গোবিন্দনের জন্য। দেখে মনে হচ্ছে আপনি ম্যাটপ্লটলিব আপডেট করার চেষ্টা করতে পারেন। আপনি যদি ম্যাটপ্লটলিব আপডেট করতে না পারেন (উদাহরণস্বরূপ যদি আপনার অপর্যাপ্ত প্রশাসনিক অধিকার থাকে), সম্ভবত কোনও ভিন্ন ব্যাকএন্ড ব্যবহার করা matplotlib.use()সাহায্য করতে পারে।


চেক করার জন্য ধন্যবাদ! আমি পিডিএফ ব্যাকএন্ড ব্যবহার করছি ( matplotlib.use('PDF'))। আমি এনটহুট পাইথন ডিস্ট্রিবিউশনের সর্বশেষ সংস্করণটির সাথে উপস্থিত সংস্করণটি ব্যবহার করছি। আপনি কি দয়া করে দেখুন এটি পিডিএফ ব্যাকএন্ডের সাথে কাজ করে কিনা। ধন্যবাদ!
কৌতূহলী 2 শেয়ার

এটি ম্যাক ওএস এক্সে পিডিএফ ব্যাকএন্ডের সাথে কাজ করে you আপনি কি নিশ্চিত যে আউটপুট ফাইলটি সত্যই আপডেট হয়েছে plt.savefig()?
এরিক হে লেবিগোট

আমি সমস্যাটি বুঝতে পেরেছি, আমি মনে করি। আমি যদি লাইনে বাইরে যাই aPlot =তবে plt.subplotএটি আমার পক্ষেও কার্যকর। দেখে মনে হচ্ছে যে কেউ যদি সাবপ্লটকে সেইরকম একটি চলকটিতে বরাদ্দ করে থাকে তবে অক্ষ সীমা নির্ধারণের জন্য অন্য কিছু পদ্ধতি ব্যবহার করা আবশ্যক। এটা কি সত্যি?
কৌতূহলী 2 শেয়ার

1
আমি যতদূর জানি, plt.ylim()বর্তমান অক্ষগুলিতে সীমাবদ্ধতা প্রয়োগ করে, যা আপনি যখন করেন তখন সেট করা হয় plt.subplot()plt.subplot()অক্ষটি কীভাবে ফিরে আসে সেগুলি কীভাবে ব্যবহার করা হয় (ভেরিয়েবলের মধ্যে রাখে বা না ইত্যাদি) সে সম্পর্কে যত্নও আমি বিশ্বাস করতে পারি না । সুতরাং আমি বলব এটি কাজ করা উচিত; এটি আমার মেশিনে কাজ করে।
এরিক হে লেবিগোট

6

শুধু সূক্ষ্ম সুরের জন্য। আপনি যদি অক্ষের একটি মাত্র সীমানা নির্ধারণ করতে চান এবং অন্য সীমানাটি অপরিবর্তিত রাখতে চান, তবে আপনি নীচের একটি বা একাধিকটি চয়ন করতে পারেন

plt.xlim(right=xmax) #xmax is your value
plt.xlim(left=xmin) #xmin is your value
plt.ylim(top=ymax) #ymax is your value
plt.ylim(bottom=ymin) #ymin is your value

ডকুমেন্টেশন কটাক্ষপাত xlim এবং জন্য ylim


0

যদি কোনও অক্ষ (প্রশ্নটিতে প্রদর্শিত কোডের নীচে কোড দ্বারা উত্পন্ন) প্রথম অক্ষের সাথে পরিসীমা ভাগ করে নিচ্ছে তবে নিশ্চিত হয়ে নিন যে আপনি es অক্ষের শেষ প্লটের পরে সীমাটি সেট করেছেন ।

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