كيفية ضبط نسبة العرض إلى الارتفاع في matplotlib
تشير نسبة العرض إلى الارتفاع لمخطط matplotlib إلى جانب قياس المحور، أي نسبة وحدة y إلى وحدة x.
يمكن تعديل هذه النسبة باستخدام الدالة matplotlib.axes.Axes.set_aspect() .
تحت الغطاء، تعمل الدالة set_aspect() فعليًا على تغيير ما يسمى نظام إحداثيات البيانات ، ولكن من الناحية العملية نرغب عادةً في تغيير نظام إحداثيات العرض .
لتسهيل هذا التحويل، يمكننا استخدام هذا الجزء من التعليمات البرمجية:
#define y-unit to x-unit ratio ratio = 1.0 #get x and y limits x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () #set aspect ratio ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio)
دعنا نستعرض مثالاً لاستخدام هذه الوظيفة عمليًا.
الخطوة 1: إنشاء مؤامرة Matplotlib الأساسية
أولاً، لنقم بإنشاء مخطط خطي بسيط باستخدام Matplotlib:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #displayplot plt. show ()
الخطوة 2: ضبط نسبة العرض إلى الارتفاع (بطريقة خاطئة)
لاحظ أن المحور x أطول من المحور y. دعونا نحاول ضبط نسبة العرض إلى الارتفاع على 1، أي أن المحور السيني والمحور الصادي يجب أن يكونا متساويين:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #attempt to set aspect ratio to 1 ax. set_aspect (1) #displayplot plt. show ()
لاحظ أن هذا لم يعمل كما هو متوقع. المحور y أطول بكثير من المحور x.
الخطوة 3: ضبط نسبة العرض إلى الارتفاع (بالطريقة الصحيحة)
يوضح الكود التالي كيفية استخدام عملية حسابية بسيطة لتعيين نسبة العرض إلى الارتفاع الصحيحة:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #set aspect ratio to 1 ratio = 1.0 x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio) #displayplot plt. show ()
لاحظ أن هذه المؤامرة لديها نسبة العرض إلى الارتفاع التي توقعناها. المحور السيني والمحور الصادي متساويان في الطول.
الخطوة 4: اضبط نسبة العرض إلى الارتفاع كما تريد
إذا أردنا أن يكون المحور y أطول من المحور x، فيمكننا ببساطة تحديد أن تكون نسبة العرض إلى الارتفاع رقمًا أكبر من 1:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #set aspect ratio to 3 ratio = 3 x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio) #displayplot plt. show ()
وإذا أردنا أن يكون المحور y أقصر من المحور x، فيمكننا ببساطة تحديد أن تكون نسبة العرض إلى الارتفاع رقمًا أقل من 1:
import matplotlib.pyplot as plt #define matplotlib figure and axis fig, ax = plt. subplots () #create simple line plot ax. plot ([0, 10],[0, 20]) #set aspect ratio to .3 ratio = .3 x_left, x_right = ax. get_xlim () y_low, y_high = ax. get_ylim () ax. set_aspect ( abs ((x_right-x_left)/(y_low-y_high))*ratio) #displayplot plt. show ()
يمكنك العثور على المزيد من دروس Matplotlib هنا .