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

التحكم بحجم ال subplots في Matplotlib | بايثون

Ali Ismael

السؤال

Recommended Posts

  • 1

يمكنك القيام بذلك من خلال الدالة add_gridspec:

add_gridspec(nrows=1, ncols=1, **kwargs)
# حيث أن الوسيط الأول هو عدد الأسطر في الشكبة
# الوسيط الثاني هو عدد الأعمد
# مع استخدام وسطاء إضافية مثل:
# width_ratios لتحديد عرض كل رسم
# height_ratios لتحديد ارتفاع كل رسم

ثم إضافة ال subplots كما في المثال التوضيحي التالي:

fig5 = plt.figure(constrained_layout=True)
# subplot تحديد أبعاد كل 
widths = [2, 3, 1.5]
heights = [1, 3, 2]
# subplots تعريف مساحة الشبكة التي ستضم ال 
spec5 = fig5.add_gridspec(ncols=3, nrows=3, width_ratios=widths,
                          height_ratios=heights)
# GridSpec(3, 3, height_ratios=[1, 3, 2], width_ratios=[2, 3, 1.5])
# subplots إضافة 
for row in range(3):
    for col in range(3):
			  # subplot إضافة 
        ax = fig5.add_subplot(spec5[row, col])
				# وضع معلومات ضمنه تمثل الطول والعرض
        label = 'Width: {}\nHeight: {}'.format(widths[col], heights[row])
        ax.annotate(label, (0.1, 0.5), xycoords='axes fraction', va='center')

الخرج:
index.png.aa1ae75ac36667b8280f643773f31ba9.png
كما يمكنك استخدام الوسيط gridspec_kw في الدالة subplots لتحديد نسبة العرض والارتفاع مباشرةً كما في المثال التالي:

import numpy as np
import matplotlib.pyplot as plt 
# البيانات
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# رسمها
f, (ax1, ax2) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [3, 1]})
# رسم البيانات
ax1.plot(x, y,color="w")
ax1.set_facecolor('black')
ax2.plot(y, x,color="w")
ax2.set_facecolor('red')
# plots لترك مسافة بين ال 
f.tight_layout()
# إضافة خطوط شبكية
ax1.grid(b = True, color ='w',
		linestyle ='-.', linewidth = 0.5,
		alpha = 0.6)
ax2.grid(b = True, color ='black',
		linestyle ='-.', linewidth = 0.5,
		alpha = 0.6)

والخرج:
1.png.0f27875f8063efcced8c96bd7734e48c.png
مثال آخر:

import numpy as np
import matplotlib.pyplot as plt 
# البيانات
x = np.arange(0, 10, 0.2)
y = np.sin(x)
# رسمها
f, (ax0, ax1, ax2) = plt.subplots(3, 1, gridspec_kw={'height_ratios': [1, 1, 3]})
ax0.plot(y, x,color="w")
ax0.set_facecolor('b')
ax1.plot(x, y,color="w")
ax1.set_facecolor('black')
ax2.plot(y, x,color="w")
ax2.set_facecolor('red')
f.tight_layout()
ax0.grid(b = True, color ='b',
		linestyle ='-.', linewidth = 0.5,
		alpha = 0.6)
ax1.grid(b = True, color ='w',
		linestyle ='-.', linewidth = 0.5,
		alpha = 0.6)
ax2.grid(b = True, color ='black',
		linestyle ='-.', linewidth = 0.5,
		alpha = 0.6)

الخرج:
2.png.c86bf79428f254e0401ad5e1883a0fca.png

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • -1

يمكنك استخدام set_figwidth و set_figheight لضبط طول وعرض الصورة بتمرير رقم يمثل حجم الطول أو العرض كالتالي:

f.set_figheight(15)
f.set_figwidth(15)

كذلك يمكنك استخدام figsize للتحكم في الإحداثيات التي يتم عرضها بالطول والعرض كالتالي:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 2, figsize=(10,7)) #حجم الرسم
fig.tight_layout()

#البيانات المراد عرضها
x = [1, 2, 3]
y = [7, 13, 24]

#خلق الرسم
ax[0, 0].plot(x, y, color='red')
ax[0, 1].plot(x, y, color='blue')
ax[1, 0].plot(x, y, color='green')
ax[1, 1].plot(x, y, color='purple')

وتظهر كالتالي:subplot1-768x534.png.884700fa7b9d3694f86293830de1a773.png

أو تضغير حجم الرسمة بتصغير الأبعاد التي يراد عرضها هكذا:

import matplotlib.pyplot as plt

fig, ax = plt.subplots(2, 2, figsize=(5,5)) #حجم الرسم
fig.tight_layout()

#البيانات المراد عرضها
x = [1, 2, 3]
y = [7, 13, 24]

#خلق الرسم
ax[0, 0].plot(x, y, color='red')
ax[0, 1].plot(x, y, color='blue')
ax[1, 0].plot(x, y, color='green')
ax[1, 1].plot(x, y, color='purple')

فهذه المرة تظهر أصغر هكذا:

subplot2.thumb.png.1aed4fb81c8c3be30410f7210f8c9903.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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...