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

السؤال

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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...