از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تجسم داده های پایتون با Matplotlib
سرفصلهای مطلب
معرفی
تجسم روندهای داده یکی از مهمترین وظایف در علم داده و یادگیری ماشین است. انتخاب الگوریتم های داده کاوی و یادگیری ماشین به شدت بستگی دارد روی الگوهای شناسایی شده در مجموعه داده در مرحله تجسم داده ها. در این مقاله خواهیم دید که چگونه می توانیم انواع مختلف تجسم داده ها را در پایتون انجام دهیم. ما از پایتون استفاده خواهیم کرد کتابخانه 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. برای این کار باید از 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
تابع. این آرگومان شکل و رنگ نشانگر را مشخص می کند روی نمودار
خروجی:
ترسیم به روش شی گرا
در قسمت قبل از آن استفاده کردیم 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
روش به ترتیب فاصله از سمت چپ و پایین محور پیش فرض و عرض و ارتفاع محور است. مقدار این پارامترها باید به عنوان کسری از اندازه شکل پیش فرض ذکر شود. با اجرای اسکریپت بالا یک محور خالی مانند شکل زیر ایجاد می شود:
خروجی اسکریپت بالا به شکل زیر است:
ما محور خود را داریم، اکنون می توانیم داده ها و برچسب ها را به این محور اضافه کنیم. برای اضافه کردن داده ها، باید با آن تماس بگیریم 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')
می بینید که خروجی مشابه همان چیزی است که در بخش گذشته دریافت کردیم اما این بار از رویکرد شی گرا استفاده کردیم.
می توانید هر تعداد محور که می خواهید اضافه کنید روی یک طرح با استفاده از 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 است. اگر اسکریپت بالا را اجرا کنید، یک نمودار بزرگ برای تابع مکعب و یک گراف کوچک برای یک تابع مربع که در داخل نمودار برای مکعب قرار دارد، خواهید دید. خروجی به شکل زیر است:
طرح های فرعی
راه دیگر برای ایجاد بیش از یک طرح در یک زمان، استفاده از آن است 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 ستون مانند شکل زیر مشاهده خواهید کرد:
در مرحله بعد، از یک حلقه برای اضافه کردن خروجی تابع مربع به هر یک از این نمودارها استفاده می کنیم. به اسکریپت زیر دقت کنید:
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 داخلی از طریق محور در ستون ها تکرار می شود. خروجی اسکریپت بالا به شکل زیر است:
در خروجی می توانید هر شش نمودار را با توابع مربع مشاهده کنید.
تغییر اندازه شکل برای یک پلات
علاوه بر تغییر اندازه پیش فرض نمودار، می توانید اندازه شکل را برای نمودارهای خاص نیز تغییر دهید. برای انجام این کار، باید یک مقدار برای 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 بسیار ساده است. تنها کاری که باید انجام دهید این است که مقدار را برای آن ارسال کنید 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
پارامتر. خروجی به شکل زیر است:
در خروجی، می توانید یک افسانه را در گوشه بالا سمت چپ مشاهده کنید.
موقعیت افسانه را می توان با ارسال یک مقدار برای تغییر داد 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)
خروجی:
گزینه های رنگ
گزینه های مختلفی برای تغییر رنگ و سبک طرح ها وجود دارد. ساده ترین راه این است که حرف اول رنگ را به عنوان آرگومان سوم ارسال کنید، همانطور که در اسکریپت زیر نشان داده شده است:
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” در پارامتر سوم ارسال شده است. در خروجی، طرح اول با یک خط قرمز قرمز چاپ می شود، در حالی که نمودار دوم با یک خط جامد سبز مطابق شکل زیر چاپ می شود:
راه دیگر برای تغییر رنگ طرح استفاده از آن است 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)
خروجی:
پلات پشته
نمودار پشته ای توسعه نمودار میله ای یا نمودار خطی است که داده ها را از دسته های مختلف تجزیه می کند و آنها را در کنار هم قرار می دهد تا بتوان به راحتی بین مقادیر دسته های مختلف مقایسه کرد.
فرض کنید میخواهید گلهای سه بازیکن مختلف فوتبال در سال را در طول 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()
خروجی:
برای ایجاد یک نمودار پشته با استفاده از پایتون، به سادگی می توانید از آن استفاده کنید 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()
خروجی:
برای ایجاد نمودار دایره ای در 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