সমস্যাটি হ'ল ব্যবহার aspect='equal'
, যা সাবপ্লটগুলিকে একটি স্বেচ্ছাচারিত দিক অনুপাতের দিকে প্রসারিত করা এবং সমস্ত খালি স্থান পূরণ করা থেকে বিরত করে ।
সাধারণত, এটি কাজ করবে:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
plt.subplots_adjust(wspace=0, hspace=0)
ফলাফল এটি:
তবে aspect='equal'
নিম্নলিখিত কোডের মতোই:
import matplotlib.pyplot as plt
ax = [plt.subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
plt.subplots_adjust(wspace=0, hspace=0)
এটি আমরা পাই:
এই দ্বিতীয় ক্ষেত্রে পার্থক্য হ'ল আপনি x- এবং y- অক্ষকে একই সংখ্যার ইউনিট / পিক্সেল রাখতে বাধ্য করেছেন। যেহেতু অক্ষগুলি ডিফল্টরূপে 0 থেকে 1 এ চলে যায় (অর্থাত্ কোনও কিছুর পরিকল্পনা করার আগে), aspect='equal'
প্রতিটি অক্ষকে একটি বর্গ হিসাবে জোর করে। চিত্রটি কোনও বর্গ নয়, তাই পাইপলট অনুভূমিকভাবে অক্ষের মধ্যে অতিরিক্ত ব্যবধান যুক্ত করে।
এই সমস্যাটি পেতে, আপনি সঠিক দিক অনুপাত রাখতে আপনার চিত্রটি সেট করতে পারেন। আমরা এখানে অবজেক্ট-ভিত্তিক পাইপ্লট ইন্টারফেস ব্যবহার করব, যা আমি সাধারণভাবে শ্রেষ্ঠ হিসাবে বিবেচনা করি:
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(8,8)) # Notice the equal aspect ratio
ax = [fig.add_subplot(2,2,i+1) for i in range(4)]
for a in ax:
a.set_xticklabels([])
a.set_yticklabels([])
a.set_aspect('equal')
fig.subplots_adjust(wspace=0, hspace=0)
ফলাফল এখানে:
None
যা ভাবেন তা করছে না, এর অর্থ 'ডিফল্ট ব্যবহার করুন'।