وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

تجسم داده های پایتون با Matplotlib

0 27
زمان لازم برای مطالعه: 10 دقیقه


معرفی

تجسم روندهای داده یکی از مهمترین وظایف در علم داده و یادگیری ماشین است. انتخاب الگوریتم های داده کاوی و یادگیری ماشین به شدت بستگی دارد روی الگوهای شناسایی شده در مجموعه داده در مرحله تجسم داده ها. در این مقاله خواهیم دید که چگونه می توانیم انواع مختلف تجسم داده ها را در پایتون انجام دهیم. ما از پایتون استفاده خواهیم کرد کتابخانه Matplotlib که استاندارد واقعی برای تجسم داده ها در پایتون است.

مقاله آشنایی مختصر با Matplotlib برای تجسم داده ها مقدمه سطح بسیار بالایی از کتابخانه Matplot را ارائه می دهد و روش ترسیم نمودارهای پراکندگی، نمودارهای نواری، هیستوگرام و غیره را توضیح می دهد. در این مقاله، عملکردهای Matplotlib بیشتری را بررسی خواهیم کرد.

تغییر اندازه طرح پیش فرض

اولین کاری که انجام می دهیم این است که اندازه طرح پیش فرض را تغییر دهیم. به طور پیش فرض، اندازه نمودارهای Matplotlib 6 در 4 اینچ است. اندازه پیش فرض نمودارها را می توان با استفاده از این دستور بررسی کرد:

import matplotlib.pyplot as plt

print(plt.rcParams.get('figure.figsize'))

برای مشاهده بهتر، ممکن است نیاز به تغییر اندازه پیش فرض نمودار Matplotlib باشد. برای این کار می توانید از اسکریپت زیر استفاده کنید:

fig_size = plt.rcParams("figure.figsize")
fig_size(0) = 10
fig_size(1) = 8
plt.rcParams("figure.figsize") = fig_size

اسکریپت بالا اندازه پیش فرض نمودارهای Matplotlib را به 10 در 8 اینچ تغییر می دهد.

بیایید بحث خود را با یک طرح خط ساده شروع کنیم.

طرح خط

خط خطی اساسی ترین نمودار در Matplotlib است. می توان از آن برای رسم هر تابعی استفاده کرد. بیایید نمودار خطی برای تابع مکعب رسم کنیم. به اسکریپت زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

plt.plot(x, y, 'b')
plt.xlabel('X axis')
plt.ylabel('Y axis')
plt.title('Cube Function')
plt.show()

در اسکریپت بالا ما ابتدا import را pyplot کلاس از کتابخانه Matplotlib. ما دو تا داریم numpy آرایه ها x و y در فیلمنامه ما ما استفاده کردیم linspace روش از numpy کتابخانه ای برای ایجاد لیست 20 عددی بین 10- تا مثبت 9. سپس مکعب می گیریم root از تمام اعداد و نتیجه را به متغیر اختصاص دهید y. برای طرح دو numpy آرایه ها، شما به سادگی می توانید آنها را به plot روش از pyplot کلاس کتابخانه Matplotlib. می توانید استفاده کنید xlabel، ylabel و title ویژگی های pyplot کلاس به منظور برچسب زدن محور x، محور y و عنوان طرح. خروجی اسکریپت بالا به شکل زیر است:

خروجی:

تجسم داده های پایتون با Matplotlib

ایجاد پلات های متعدد

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

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 9, 20)

y = x ** 3

plt.subplot(2,2,1)
plt.plot(x, y, 'b*-')
plt.subplot(2,2,2)
plt.plot(x, y, 'y--')
plt.subplot(2,2,3)
plt.plot(x, y, 'b*-')
plt.subplot(2,2,4)
plt.plot(x, y, 'y--')

اولین ویژگی به subplot تابع ردیف‌هایی است که نمودارهای فرعی خواهند داشت و پارامتر دوم تعداد ستون‌های آن را مشخص می‌کند. مقدار 2،2 گونه که چهار نمودار وجود خواهد داشت. آرگومان سوم موقعیتی است که نمودار در آن نمایش داده می شود. موقعیت ها از بالا به چپ شروع می شوند. نمودار با موقعیت 1 در سطر اول و ستون اول نمایش داده می شود. به طور مشابه، نمودار با موقعیت 2 در سطر اول و ستون دوم نمایش داده می شود.

به آرگومان سوم آن نگاهی بیندازید plot تابع. این آرگومان شکل و رنگ نشانگر را مشخص می کند روی نمودار

خروجی:

تجسم داده های پایتون با Matplotlib

ترسیم به روش شی گرا

در قسمت قبل از آن استفاده کردیم plot روش از pyplot کلاس و مقادیر آن را برای مختصات x و y همراه با برچسب ها ارسال کنید. با این حال، در پایتون همین طرح را می توان به روش شی گرا ترسیم کرد. به اسکریپت زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

figure = plt.figure()

axes = figure.add_axes((0.2, 0.2, 0.8, 0.8))

را figure روشی به نام استفاده pyplot کلاس برمی گردد figure هدف – شی. می توانید تماس بگیرید add_axes روش با استفاده از این شی پارامترها به add_axes روش به ترتیب فاصله از سمت چپ و پایین محور پیش فرض و عرض و ارتفاع محور است. مقدار این پارامترها باید به عنوان کسری از اندازه شکل پیش فرض ذکر شود. با اجرای اسکریپت بالا یک محور خالی مانند شکل زیر ایجاد می شود:

خروجی اسکریپت بالا به شکل زیر است:

تجسم داده های پایتون با Matplotlib

ما محور خود را داریم، اکنون می توانیم داده ها و برچسب ها را به این محور اضافه کنیم. برای اضافه کردن داده ها، باید با آن تماس بگیریم plot عملکرد و داده های ما را ارسال می کنیم. به طور مشابه، برای ایجاد برچسب برای محور x، محور y و برای عنوان، می توانیم از set_xlabel، set_ylabel و set_title عملکردهایی که در زیر نشان داده شده است:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

figure = plt.figure()

axes = figure.add_axes((0.2, 0.2, 0.8, 0.8))

axes.plot(x, y, 'b')
axes.set_xlabel('X Axis')
axes.set_ylabel('Y Axis')
axes.set_title('Cube function')

تجسم داده های پایتون با Matplotlib

می بینید که خروجی مشابه همان چیزی است که در بخش گذشته دریافت کردیم اما این بار از رویکرد شی گرا استفاده کردیم.

پیشنهاد می‌کنیم بخوانید:  معرفی ScrapePark.org – خراش دادن وب را بدون آسیب رساندن به کسی تمرین کنید

می توانید هر تعداد محور که می خواهید اضافه کنید روی یک طرح با استفاده از add_axes روش. به مثال زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure = plt.figure()

axes = figure.add_axes((0.0, 0.0, 0.9, 0.9))
axes2 = figure.add_axes((0.07, 0.55, 0.35, 0.3)) 

axes.plot(x, y, 'b')
axes.set_xlabel('X Axis')
axes.set_ylabel('Y Axis')
axes.set_title('Cube function')

axes2.plot(x, z, 'r')
axes2.set_xlabel('X Axis')
axes2.set_ylabel('Y Axis')
axes2.set_title('Square function')

به اسکریپت بالا با دقت نگاه کنید. در اسکریپت بالا دو محور داریم. محور اول شامل نمودارهای مکعب است root از ورودی در حالی که محور دوم نمودار مربع را ترسیم می کند root از همان داده ها در نمودار دیگر برای محور مکعب.

در این مثال، نقش پارامترهای چپ، پایین، عرض و ارتفاع را بهتر درک خواهید کرد. در محور اول، مقادیر چپ و پایین صفر و مقدار عرض و ارتفاع روی 0.9 تنظیم شده است که به این معنی است که محور بیرونی ما 90 درصد عرض و ارتفاع محور پیش‌فرض را خواهد داشت.

برای محور دوم، مقدار سمت چپ روی 0.07، برای پایین روی 0.55 تنظیم شده است، در حالی که عرض و ارتفاع به ترتیب 0.35 و 0.3 است. اگر اسکریپت بالا را اجرا کنید، یک نمودار بزرگ برای تابع مکعب و یک گراف کوچک برای یک تابع مربع که در داخل نمودار برای مکعب قرار دارد، خواهید دید. خروجی به شکل زیر است:

تجسم داده های پایتون با Matplotlib

طرح های فرعی

راه دیگر برای ایجاد بیش از یک طرح در یک زمان، استفاده از آن است subplot روش. شما باید مقادیر را برای the ارسال کنید nrow و ncols مولفه های. تعداد کل قطعه های تولید شده خواهد بود nrow x ncols. بیایید به یک مثال ساده نگاهی بیندازیم. اسکریپت زیر را اجرا کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

fig, axes = plt.subplots(nrows=2, ncols=3)

در خروجی 6 نمودار در 2 سطر و 3 ستون مانند شکل زیر مشاهده خواهید کرد:

تجسم داده های پایتون با Matplotlib

در مرحله بعد، از یک حلقه برای اضافه کردن خروجی تابع مربع به هر یک از این نمودارها استفاده می کنیم. به اسکریپت زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 9, 20)

z = x ** 2

figure, axes = plt.subplots(nrows=2, ncols=3)

for rows in axes:
    for ax1 in rows:
        ax1.plot(x, z, 'b')
        ax1.set_xlabel('X - axis')
        ax1.set_ylabel('Y - axis')
        ax1.set_title('Square Function')

در اسکریپت بالا، روی محورهای برگردانده شده توسط the تکرار می‌کنیم subplots تابع و نمایش خروجی تابع مربع روی هر محور به یاد داشته باشید، از آنجایی که ما محورهایی در 2 سطر و سه ستون داریم، باید یک حلقه تودرتو برای تکرار در تمام محورها اجرا کنیم. حلقه for خارجی از طریق محورها در ردیف ها تکرار می شود در حالی که حلقه for داخلی از طریق محور در ستون ها تکرار می شود. خروجی اسکریپت بالا به شکل زیر است:

تجسم داده های پایتون با Matplotlib

در خروجی می توانید هر شش نمودار را با توابع مربع مشاهده کنید.

تغییر اندازه شکل برای یک پلات

علاوه بر تغییر اندازه پیش فرض نمودار، می توانید اندازه شکل را برای نمودارهای خاص نیز تغییر دهید. برای انجام این کار، باید یک مقدار برای the ارسال کنید figsize پارامتر از subplots تابع. ارزش برای figsize پارامتر باید به شکل یک تاپلی ارسال شود که در آن مقدار اول با عرض و مقدار دوم مربوط به ارتفاع نمودار باشد. به مثال زیر نگاه کنید تا روش تغییر اندازه یک نمودار خاص را ببینید:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure, axes = plt.subplots(figsize = (6,8))

axes.plot(x, z, 'r')
axes.set_xlabel('X-Axis')
axes.set_ylabel('Y-Axis')
axes.set_title('Square Function')

در اسکریپت بالا یک نمودار برای تابع مربع رسم کنید که 6 اینچ عرض و 8 اینچ ارتفاع دارد. خروجی به شکل زیر است:

تجسم داده های پایتون با Matplotlib

افزودن افسانه ها

افزودن افسانه ها به یک طرح با استفاده از کتابخانه Matplotlib بسیار ساده است. تنها کاری که باید انجام دهید این است که مقدار را برای آن ارسال کنید label پارامتر از plot تابع. سپس پس از تماس با plot تابع، فقط باید با آن تماس بگیرید legend تابع. به مثال زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure = plt.figure()

axes = figure.add_axes((0,0,1,1))

axes.plot(x, z, label="Square Function")
axes.plot(x, y, label="Cube Function")
axes.legend()

در اسکریپت بالا دو تابع مربع و مکعب را با استفاده از متغیرهای x، y و z تعریف می کنیم. سپس ابتدا تابع مربع را رسم می کنیم و برای label پارامتر، مقدار را پاس می کنیم Square Function. این مقداری خواهد بود که در برچسب برای تابع مربع نمایش داده می شود. بعد تابع مکعب را رسم می کنیم و پاس می دهیم Cube Function به عنوان ارزش برای label پارامتر. خروجی به شکل زیر است:

تجسم داده های پایتون با Matplotlib

در خروجی، می توانید یک افسانه را در گوشه بالا سمت چپ مشاهده کنید.

موقعیت افسانه را می توان با ارسال یک مقدار برای تغییر داد loc پارامتر از legend تابع. مقادیر ممکن می تواند 1 (برای گوشه سمت راست بالا)، 2 (برای گوشه سمت چپ بالا)، 3 (برای گوشه پایین سمت چپ) و 4 (برای گوشه پایین سمت راست) باشد. بیایید یک افسانه در گوشه سمت راست پایین طرح ترسیم کنیم. اسکریپت زیر را اجرا کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure = plt.figure()

axes = figure.add_axes((0,0,1,1))

axes.plot(x, z, label="Square Function")
axes.plot(x, y, label="Cube Function")
axes.legend(loc=4)

خروجی:

پیشنهاد می‌کنیم بخوانید:  Python: Slice Notation روی چندتایی

تجسم داده های پایتون با Matplotlib

گزینه های رنگ

گزینه های مختلفی برای تغییر رنگ و سبک طرح ها وجود دارد. ساده ترین راه این است که حرف اول رنگ را به عنوان آرگومان سوم ارسال کنید، همانطور که در اسکریپت زیر نشان داده شده است:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure = plt.figure()

axes = figure.add_axes((0,0,1,1))

axes.plot(x, z, "r" ,label="Square Function")
axes.plot(x, y, "g", label="Cube Function")
axes.legend(loc=4)

در اسکریپت بالا، یک رشته “r” به عنوان پارامتر سوم برای طرح اول ارسال شده است. برای نمودار دوم، رشته “g” در پارامتر سوم ارسال شده است. در خروجی، طرح اول با یک خط قرمز قرمز چاپ می شود، در حالی که نمودار دوم با یک خط جامد سبز مطابق شکل زیر چاپ می شود:

تجسم داده های پایتون با Matplotlib

راه دیگر برای تغییر رنگ طرح استفاده از آن است color پارامتر. می توانید نام رنگ یا مقدار هگزادسیمال رنگ را به آن ارسال کنید color پارامتر. به مثال زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure = plt.figure()

axes = figure.add_axes((0,0,1,1))

axes.plot(x, z, color = "purple" ,label="Square Function")
axes.plot(x, y, color = "#FF0000", label="Cube Function")
axes.legend(loc=4)

خروجی:

تجسم داده های پایتون با Matplotlib

پلات پشته

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

فرض کنید می‌خواهید گل‌های سه بازیکن مختلف فوتبال در سال را در طول 8 سال گذشته مقایسه کنید، می‌توانید با استفاده از Matplot با استفاده از اسکریپت زیر یک نمودار پشته ایجاد کنید:

import matplotlib.pyplot as plt

year = (2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018)

player1 = (8,10,17,15,23,18,24,29)
player2 = (10,14,19,16,25,20,26,32)
player3 = (12,17,21,19,26,22,28,35)

plt.plot((),(), color='y', label = 'player1')
plt.plot((),(), color='r', label = 'player2')
plt.plot((),(), color='b', label = 'player3 ')

plt.stackplot(year, player1, player2, player3, colors = ('y','r','b'))
plt.legend()
plt.title('Goals by three players')
plt.xlabel('year')
plt.ylabel('Goals')
plt.show()

خروجی:

تجسم داده های پایتون با Matplotlib

برای ایجاد یک نمودار پشته با استفاده از پایتون، به سادگی می توانید از آن استفاده کنید stackplot کلاس کتابخانه Matplotlib. مقادیری که می خواهید نمایش دهید به عنوان اولین پارامتر به کلاس و مقادیری که قرار است انباشته شوند ارسال می شود روی محور افقی به عنوان پارامتر دوم، پارامتر سوم و غیره نمایش داده می شود روی. شما همچنین می توانید رنگ را برای هر دسته با استفاده از colors صفت.

نمودار دایره ای

نوع پای یک نمودار دایره‌ای است که در آن دسته‌های مختلف به عنوان بخشی از دایره مشخص شده‌اند. هر چه سهم دسته بزرگتر باشد، سهم بیشتری را اشغال خواهد کرد روی نمودار.

بیایید یک نمودار دایره ای ساده از گل های یک تیم فوتبال از ضربات آزاد، پنالتی و گل های زمینی ترسیم کنیم. به اسکریپت زیر دقت کنید:

import matplotlib.pyplot as plt

goal_types = 'Penalties', 'Field Goals', 'Free Kicks'

goals = (12,38,7)
colors = ('y','r','b')

plt.pie(goals, labels = goal_types, colors=colors ,shadow = True, explode = (0.05, 0.05, 0.05), autopct = '%1.1f%%')
plt.axis('equal')

plt.show()

خروجی:

تجسم داده های پایتون با Matplotlib

برای ایجاد نمودار دایره ای در Matplot lib، pie کلاس استفاده می شود. اولین پارامتر سازنده کلاس، لیست اعداد برای هر دسته است. فهرست دسته‌بندی‌های جدا شده با کاما به عنوان آرگومان ارسال می‌شود labels صفت. لیست رنگ ها برای هر دسته به دسته منتقل می شود colors صفت. اگر روی true تنظیم شود، shadow ویژگی سایه هایی را در اطراف دسته های مختلف ایجاد می کند روی نمودار دایره ای در نهایت، explode ویژگی نمودار دایره ای را به بخش های جداگانه تقسیم می کند.

در اینجا ذکر این نکته ضروری است که شما مجبور نیستید درصد را برای هر دسته بگذرانید. بلکه فقط باید مقادیر را پاس کنید و درصد نمودارهای دایره ای به طور خودکار محاسبه می شود.

ذخیره یک نمودار

ذخیره یک نمودار در Matplotlib بسیار آسان است. تنها کاری که باید انجام دهید این است که با این شماره تماس بگیرید savefig روش از figure شیء کنید و مسیر فایلی را که می خواهید نمودار شما با آن ذخیره شود، ارسال کنید. به مثال زیر دقت کنید:

import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-10, 9, 20)

y = x ** 3

z = x ** 2

figure, axes = plt.subplots(figsize = (6,8))

axes.plot(x, z, 'r')
axes.set_xlabel('X-Axis')
axes.set_ylabel('Y-Axis')
axes.set_title('Square Function')

figure.savefig(r'E:/fig1.jpg')

اسکریپت بالا فایل شما را با نام ذخیره می کند fig1.jpg در root از E فهرست راهنما.

اگر به تجسم داده‌ها علاقه دارید و نمی‌دانید از کجا شروع کنید، حتماً کتاب ما را بررسی کنید روی تجسم داده ها در پایتون.

تجسم داده ها در پایتون، کتابی برای توسعه دهندگان پایتون مبتدی تا متوسط، شما را از طریق دستکاری ساده داده ها با پانداها راهنمایی می کند، کتابخانه های ترسیم هسته ای مانند Matplotlib و Seaborn را پوشش می دهد و به شما نشان می دهد که چگونه از کتابخانه های اعلامی و تجربی مانند Altair استفاده کنید.

نتیجه

Matplotlib یکی از رایج ترین کتابخانه های پایتون برای تجسم و ترسیم داده ها است. این مقاله برخی از پرکاربردترین توابع Matplotlib را با کمک مثال‌های مختلف توضیح می‌دهد. اگرچه این مقاله بیشتر موارد اساسی را پوشش می دهد، اما این فقط نوک کوه یخ است. من پیشنهاد می کنم که اسناد رسمی را بررسی کنید کتابخانه Matplotlib و ببینید چه کارهای بیشتری می توانید با این کتابخانه شگفت انگیز انجام دهید.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-26 01:10:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید