اذهب إلى المحتوى

السؤال

نشر

أريد تعديل المسافات الفاصلة بين ال subplots فمثلاً لدي الكود التالي الذي يقوم بتوليد الرسمين التاليين:

import matplotlib.pyplot as plt
data = np.arange(3000).reshape((100,30))
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(data)
subplot2 = fig.add_subplot(122)
subplot2.plot(data)
plt.show()

والنتيجة:
index.png.b2ab3bbacf3e19eb94694d1e7892c915.png ما أريده هو جعلهما متباعدين لكي يكون الناتج بشكل أوضح ولكي لا يحدث هذا التداخل.
 

Recommended Posts

  • 1
نشر

يمكنك استخدام الدالة tight_layout:

matplotlib.pyplot.tight_layout(pad=1.08)

حيث تقوم هذه الدالة بضبط المساحة المتروكة بين ال subplots. حيث أن الوسيط الأول يمثل المسافة (الحشو) بين حدود ال figure وبين ال subplots.:

import matplotlib.pyplot as plt
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(data)
subplot2 = fig.add_subplot(122)
subplot2.plot(data)
fig.tight_layout(pad=3.0)
plt.show()

الخرج:
1.png.c3d9385e9da894e4e82b3accb38bd638.png
والطريقة الثانية من خلال subplots_adjust حيث تمنحك هذه الدالة إمكانية التعديل بشكل أكثر حرية وبكل الاتجاهات، كما في الكود التالي:

import matplotlib.pyplot as plt
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(data)
subplot2 = fig.add_subplot(122)
subplot2.plot(data)
fig.subplots_adjust(
    top=0.981,
    bottom=0.049,
    left=0.042,
    right=0.981,
    hspace=0.2,
    wspace=0.2
)
plt.show()

2.png.2d80e50ec387f1aaacc6c4ae5ca90afc.png

  • 1
نشر

هناك طريقة سهلة للغاية باستخدام subplots_tool والتي توفر طريقة سهلة لضبط أبعاد الصورة ، الكود التالي يوضح كيفية  استخدامها:

import matplotlib.pyplot as plt
import numpy as np
data = np.arange(3000).reshape((100,30))
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(data)
subplot2 = fig.add_subplot(122)
subplot2.plot(data)
plt.subplot_tool()
plt.show()

تظهرلك هذه الشاشة:

6169c6aad3124_Figure2021-10-15202020.png.371a966f12d29a4f502b22b1e3ae1e63.png

من هنا تستطيع ضبط أبعاد الصورة كما تشاء دون الحاجة لمزيد من الكود.

أو استخدام constrained_layout = True كالتالي:

import matplotlib.pyplot as plt
import numpy as np
data = np.arange(3000).reshape((100,30))
fig = plt.figure()
subplot1 = fig.add_subplot(121)
subplot1.plot(data, constrained_layout = True)
subplot2 = fig.add_subplot(122)
subplot2.plot(data, constrained_layout = True)
plt.show()

وفي كلتا الطريقتين يمكن ضبطهمها ليكونوا بالمسافة التي تريد هكذا:

2.png.2d80e50ec387f1aaacc6c4ae5ca90afc.png.d297b0ff2cae3df5b5bd55df4c282bc4.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...