তৃতীয় বার কবজ। আমার অনুমান যে এটি একটি বাগ এবং ঝেনিয়ার উত্তর থেকে জানা যায় যে এটি সর্বশেষতম সংস্করণে স্থির হয়েছে। আমার কাছে 0.99.1.1 সংস্করণ রয়েছে এবং আমি নিম্নলিখিত সমাধানটি তৈরি করেছি:
import matplotlib.pyplot as plt
import numpy as np
def forceAspect(ax,aspect=1):
im = ax.get_images()
extent = im[0].get_extent()
ax.set_aspect(abs((extent[1]-extent[0])/(extent[3]-extent[2]))/aspect)
data = np.random.rand(10,20)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(data)
ax.set_xlabel('xlabel')
ax.set_aspect(2)
fig.savefig('equal.png')
ax.set_aspect('auto')
fig.savefig('auto.png')
forceAspect(ax,aspect=1)
fig.savefig('force.png')
এটি 'ফোর্স.পিএনজি':
নীচে আমার ব্যর্থ, তবুও আশাবাদী তথ্যমূলক প্রচেষ্টা রয়েছে।
দ্বিতীয় উত্তর:
নীচে আমার 'আসল উত্তর' ওভারকিল, যেমন এটির মতো কিছু করে axes.set_aspect()
। আমি মনে করি আপনি ব্যবহার করতে চান axes.set_aspect('auto')
। আমি কেন বুঝতে পারছি না এটি কেন, তবে এটি আমার জন্য বর্গাকার চিত্রের প্লট তৈরি করে, উদাহরণস্বরূপ এই স্ক্রিপ্ট:
import matplotlib.pyplot as plt
import numpy as np
data = np.random.rand(10,20)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.imshow(data)
ax.set_aspect('equal')
fig.savefig('equal.png')
ax.set_aspect('auto')
fig.savefig('auto.png')
'সমান' দিক অনুপাত সহ একটি চিত্র প্লট তৈরি করে:
এবং 'অটো' দিক অনুপাত সহ একটি:
'মূল উত্তর' এর নীচে প্রদত্ত কোডটি একটি সুস্পষ্টভাবে নিয়ন্ত্রিত দিক অনুপাতের জন্য একটি প্রারম্ভিক বিন্দু সরবরাহ করে, তবে মনে হয় এটি একবার প্রদর্শিত হবে।
আসল উত্তর:
এখানে একটি রুটিনের উদাহরণ যা সাবপ্লট প্যারামিটারগুলিকে সামঞ্জস্য করবে যাতে আপনি পছন্দসই দিক অনুপাত পাবেন:
import matplotlib.pyplot as plt
def adjustFigAspect(fig,aspect=1):
'''
Adjust the subplot parameters so that the figure has the correct
aspect ratio.
'''
xsize,ysize = fig.get_size_inches()
minsize = min(xsize,ysize)
xlim = .4*minsize/xsize
ylim = .4*minsize/ysize
if aspect < 1:
xlim *= aspect
else:
ylim /= aspect
fig.subplots_adjust(left=.5-xlim,
right=.5+xlim,
bottom=.5-ylim,
top=.5+ylim)
fig = plt.figure()
adjustFigAspect(fig,aspect=.5)
ax = fig.add_subplot(111)
ax.plot(range(10),range(10))
fig.savefig('axAspect.png')
এটি এর মতো একটি চিত্র তৈরি করে:
আমি ভাবতে পারি যদি চিত্রের মধ্যে আপনার একাধিক সাবপ্লট থাকে, আপনি সরবরাহিত রুটিনে কী এবং প্যারামিটারগুলি (প্রতিটি 1 এর ডিফল্ট) হিসাবে y এবং x সাবপ্লটগুলির সংখ্যা অন্তর্ভুক্ত করতে চান। 'সেই সংখ্যা এবং ব্যবহার hspace
এবং wspace
কীওয়ার্ড, আপনি সব subplots সঠিক অনুপাত আছে করতে পারেন।
ax.axis('equal')
সুযোগ পেয়ে চেষ্টা করেছেন? যেমনটি সবাই বলেছে, আপনার যা করা উচিত তা কাজ করা উচিত তবে কাজেরax.axis
পথের চেষ্টা করার জন্য এটি অন্য কোনও পথ হতে পারে।