كيفية ضبط نسبة العرض إلى الارتفاع في 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 () 

تعيين نسب المؤامرة matplotlib

لاحظ أن هذه المؤامرة لديها نسبة العرض إلى الارتفاع التي توقعناها. المحور السيني والمحور الصادي متساويان في الطول.

الخطوة 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 أطول من المحور الصادي

يمكنك العثور على المزيد من دروس Matplotlib هنا .

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *