IRE: Inductive Rule Extraction

IRE: Inductive Rule Extraction

استخراج قانون استقرائی
IRE: Inductive Rule Extraction

IRE: Inductive Rule Extraction

استخراج قانون استقرائی

زیرنمودار یا Subplots در پایتون

زمانی که می‌خواهیم دو یا چند نمودار را در یک شکل نمایش دهیم از subplot استفاده می‌کنیم. این کار را با استفاده از دو روش مختلف می‌توان انجام داد:

 

روش اول رسم زیر نمودار یا Subplot:

# importing required modules

import matplotlib.pyplot as plt

import numpy as np

# function to generate coordinates

def create_plot(ptype):

# setting the x-axis vaues

x = np.arange(-10, 10, 0.01)

# setting the y-axis values

if ptype == 'linear':

y = x

elif ptype == 'quadratic':

y = x**2

elif ptype == 'cubic':

y = x**3

elif ptype == 'quartic':

y = x**4

return(x, y)

# setting a style to use

plt.style.use('fivethirtyeight')

# create a figure

()fig = plt.figure

# define subplots and their positions in figure

plt1 = fig.add_subplot(221)

plt2 = fig.add_subplot(222)

plt3 = fig.add_subplot(223)

plt4 = fig.add_subplot(224)

# plotting points on each subplot

x, y = create_plot('linear')

plt1.plot(x, y, color ='r')

plt1.set_title('$y_1 = x$')

x, y = create_plot('quadratic')

plt2.plot(x, y, color ='b')

plt2.set_title('$y_2 = x^2$')

x, y = create_plot('cubic')

plt3.plot(x, y, color ='g')

plt3.set_title('$y_3 = x^3$')

x, y = create_plot('quartic')

plt4.plot(x, y, color ='k')

plt4.set_title('$y_4 = x^4$')

# adjusting space between subplots

fig.subplots_adjust(hspace=.5,wspace=0.5)

# function to show the plot

()plt.show

حاصل چهار زیرنمودار به شکل زیر است:

کد بالا را مرحله به مرحله بررسی می‌کنیم:

plt.style.use('fivethirtyeight')

شکل نمودارها با تنظیم استایل‌های مختلف موجود یا دلخواه خود می‌توانند تنظیم شوند.

 ( )fig = plt.figure

 این ویژگی به عنوان یک ظرف سطح بالا برای تمامی عناصر نمودار عمل می‌کند. بنابراین ما یک شکلی تحت عنوان fig تعریف می‌کنیم که همه عناصر زیرنمودارها را در بر بگیرد. از متد add_subplot برای تعریف زیرنمودارها و تعیین مکان آن‌ها استفاده می کنیم. قاعده کلی تعریف این تابع به صورت زیر است:

add_subplot(nrows, ncols, plot_number)

plt1 = fig.add_subplot(221)

plt2 = fig.add_subplot(222)

plt3 = fig.add_subplot(223)

plt4 = fig.add_subplot(224)

اگر یک زیر نمودار در شکلی وجود داشته باشد، می‌توان شکل را در وضعیتی تصور کرد که به سطرها و ستون‌هایی تقسیم شده است. یعنی nrows برای سطرها و ncols برای ستون‌ها) پارامتر plot_number بیانگر زیرنموداری است که تابع آن را فراخوانی می‌کند تا آن زیرنمودار را رسم کند Plot_number می‌تواند محدوده‌ای  از عدد یک تا ماکسیمم میان مقادیر nrows و ncols را داشته باشد. اگر مقادیر این سه پارامتر کمتر از 10 باشند، تابع subplot می‌تواند تنها با یک مقدار پارامتر عددی صحیح فراخوانی شود که رقم هزارگان این عدد بیانگر تعداد سطرها یا همان nrows رقم دهگان نشان‌دهنده تعداد ستون‌ها یا همان ncols و رقم یکان بیانگر مقدار پارامتر plot_number است. این به این معنی است که به جای subplot(2,3,4) می‌توان نوشت subplot(234) .

x, y = create_plot('linear')

plt1.plot(x, y, color ='r')

plt1.set_title('$y_1 = x$')

می‌خواهیم نقاط هر زیرنمودار را رسم کنیم. ابتدا محورهای x و y را با تابع create_plot و تعیین نوع بردار مورد نظر، ایجاد می‌کنیم. سپس نقاط روی زیرنمودار را با متد .plot رسم می‌کنیم. عنوان subplot را هم با متد set_title ایجاد می‌کنیم. با استفاده از $ در آغاز و پایان عنوان مورد نظرمان این اطمینان را حاصل می‌کنیم که در متن عنوان نمودار علامت underscore یا "_" به شکل اندیس یا همان subscript و علامت "^" برای توان  یا همان superscript خوانده می‌شوند.

fig.subplots_adjust(hspace=.5,wspace=0.5)

این متد برای ایجاد فاصله میان زیرنمودارها به کارگرفته می‌شود. plt.show  مثل همیشه این متد را برای نمایش شکل نهایی نمودار می‌نویسیم.

 روش دوم رسم زیر نمودار یا Subplot:

# importing required modules

import matplotlib.pyplot as plt

import numpy as np

# function to generate coordinates

def create_plot(ptype):

            # setting the x-axis vaues

            x = np.arange(0, 5, 0.01)

                       # setting y-axis values

            if ptype == 'sin':

                        # a sine wave

                        y = np.sin(2*np.pi*x)

            elif ptype == 'exp':

                        # negative exponential function

                        y = np.exp(-x)

            elif ptype == 'hybrid':

                        # a damped sine wave

                        y = (np.sin(2*np.pi*x))*(np.exp(-x))

            return(x, y)

# setting a style to use

plt.style.use('ggplot')

# defining subplots and their positions

plt1 = plt.subplot2grid((11,1), (0,0), rowspan = 3, colspan = 1)

plt2 = plt.subplot2grid((11,1), (4,0), rowspan = 3, colspan = 1)

plt3 = plt.subplot2grid((11,1), (8,0), rowspan = 3, colspan = 1)

# plotting points on each subplot

x, y = create_plot('sin')

plt1.plot(x, y, label = 'sine wave', color ='b')

x, y = create_plot('exp')

plt2.plot(x, y, label = 'negative exponential', color = 'r')

x, y = create_plot('hybrid')

plt3.plot(x, y, label = 'damped sine wave', color = 'g')

# show legends of each subplot

()plt1.legend

()plt2.legend

()plt3.legend

# function to show plot

()plt.show

نمودار حاصل به شکل زیر است:

قسمت زیر از کد را ملاحظه نمایید:

plt1 = plt.subplot2grid((11,1), (0,0), rowspan = 3, colspan = 1)

plt2 = plt.subplot2grid((11,1), (4,0), rowspan = 3, colspan = 1)

plt3 = plt.subplot2grid((11,1), (8,0), rowspan = 3, colspan = 1)

Subplot2grid مشابه pyplot.subplot است اما از اندیس‌گذاری مبتنی بر صفر استفاده می‌کند و این امکان را فراهم می‌کند که زیرنمودار چندین خانه را اشغال کند. توضیح آرگومان‌های این متد به شرح زیر است:

آرگومان اول شکل شبکه زیرنمودار را مشخص می‌کند. (Geometry of the grid)

آرگومان دوم محل زیرنمودار در شبکه را تعیین می‌کند.

آرگومان سوم تعداد سطرهای پوشیده شده با زیرنمودار است.

آرگومان چهارم تعداد ستون‌های دربرگرفته توسط زیرنمودار است.

در مثال ما هر زیرنمودار سه سطر و یک ستون را با دو سطر خالی (سطرهای شماره4 و 8 ) پوشش می‌دهد.

توجه: پس از بررسی دو مثال بالا متوجه شدیم که از متد subplot زمانی استفاده می‌کنیم که اندازه نمودارها یکسان باشد و این در حالی است که متد subplot2grid انعطاف بیشتری بر روی مکان و اندازه زیرنمودارها در اختیار ما قرار می‌دهد.

نظرات 0 + ارسال نظر
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد