دوره آموزش matplotlib، همراه با تمرین، کوئیز و پنل اختصاصی. به همراه افزونه chatgpt برای رفع اشکالات و یادگیری عمیق تر
Matplotlib
یک کتابخانه قدرتمند و پرکاربرد برای رسم نمودارها و تصاویر دو بعدی و سه بعدی در زبان برنامهنویسی پایتون است. این کتابخانه به شما امکان میدهد تا دادههای خود را به صورت گرافیکی نمایش دهید و انواع مختلفی از نمودارها مانند خطی، میلهای، هیستوگرام، scatter plot و غیره را ایجاد کنید.
mplot3d
میتوانید نمودارهای سه بعدی ایجاد کنید.pip
یا conda
انجام دهید.
pip
برای مدیریت بستههای پایتون استفاده میکنید، میتوانید Matplotlib را با اجرای دستور زیر در ترمینال یا خط فرمان نصب کنید:
pip install matplotlib
این دستور آخرین نسخه پایدار Matplotlib را دانلود و نصب میکند. پس از اتمام نصب، میتوانید با وارد کردن کتابخانه در کدهای خود، از آن استفاده کنید.
conda
به عنوان مدیر بسته استفاده میکنید، میتوانید Matplotlib را با دستور زیر نصب کنید:
conda install matplotlib
این دستور نیز آخرین نسخه پایدار Matplotlib را نصب میکند. conda
به ویژه برای کسانی که از Anaconda یا Miniconda استفاده میکنند، گزینه مناسبی است.
plt
برای این کتابخانه استفاده میشود تا کدنویسی سادهتر شود. برای وارد کردن Matplotlib، کد زیر را به ابتدای اسکریپت خود اضافه کنید:
import matplotlib.pyplot as plt
import matplotlib
print(matplotlib.__version__)
این کد نسخه نصبشده Matplotlib را چاپ میکند. اگر نسخه به درستی نمایش داده شود، به این معنی است که Matplotlib با موفقیت نصب شده و آماده استفاده است.
با انجام این مراحل، شما Matplotlib را روی سیستم خود نصب کردهاید و آمادهاید تا شروع به رسم نمودارهای جذاب و حرفهای کنید. در بخش بعدی، با مفاهیم پایهای Matplotlib آشنا خواهیم شد و اولین نمودار خود را رسم خواهیم کرد.
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
در این کد، fig
یک شیء Figure و ax
یک شیء Axes است. این دو شیء به شما امکان میدهند تا نمودارهای خود را به طور کامل کنترل کنید.
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی ساده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
در این کد، plt.plot(x, y)
یک نمودار خطی از دادههای x
و y
رسم میکند. سپس با استفاده از plt.title
، plt.xlabel
و plt.ylabel
، عنوان و برچسبهای محورها را اضافه میکنیم. در نهایت، plt.show()
نمودار را نمایش میدهد.
import matplotlib.pyplot as plt
# دادههای نمونه
categories = ['A', 'B', 'C', 'D']
values = [10, 20, 15, 25]
# رسم نمودار میلهای
plt.bar(categories, values)
# افزودن عنوان و برچسبها
plt.title("نمودار میلهای ساده")
plt.xlabel("دستهها")
plt.ylabel("مقادیر")
# نمایش نمودار
plt.show()
در این کد، plt.bar(categories, values)
یک نمودار میلهای از دادههای categories
و values
رسم میکند. سپس با استفاده از plt.title
، plt.xlabel
و plt.ylabel
، عنوان و برچسبهای محورها را اضافه میکنیم.
import matplotlib.pyplot as plt
import numpy as np
# دادههای نمونه
data = np.random.randn(1000)
# رسم هیستوگرام
plt.hist(data, bins=30)
# افزودن عنوان و برچسبها
plt.title("هیستوگرام ساده")
plt.xlabel("مقادیر")
plt.ylabel("فراوانی")
# نمایش نمودار
plt.show()
در این کد، plt.hist(data, bins=30)
یک هیستوگرام از دادههای data
با 30 دسته (bins) رسم میکند. سپس با استفاده از plt.title
، plt.xlabel
و plt.ylabel
، عنوان و برچسبهای محورها را اضافه میکنیم.
import matplotlib.pyplot as plt
import numpy as np
# دادههای نمونه
x = np.random.rand(50)
y = np.random.rand(50)
# رسم نمودار Scatter
plt.scatter(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار Scatter ساده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
در این کد، plt.scatter(x, y)
یک نمودار Scatter از دادههای x
و y
رسم میکند. سپس با استفاده از plt.title
، plt.xlabel
و plt.ylabel
، عنوان و برچسبهای محورها را اضافه میکنیم.
با این مثالها، شما اکنون میتوانید نمودارهای پایه را با Matplotlib رسم کنید. در بخش بعدی، به سراغ تنظیمات پیشرفتهتر و سفارشیسازی نمودارها خواهیم رفت.
plt.xlim()
و plt.ylim()
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# تنظیم محدوده محورها
plt.xlim(0, 6)
plt.ylim(0, 12)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با محدوده محور تنظیمشده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
تنظیم تیکها (Setting Ticks)
برای تنظیم تیکهای محورها، میتوانید از توابع plt.xticks()
و plt.yticks()
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# تنظیم تیکهای محورها
plt.xticks([1, 2, 3, 4, 5], ['یک', 'دو', 'سه', 'چهار', 'پنج'])
plt.yticks([0, 5, 10], ['صفر', 'پنج', 'ده'])
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با تیکهای تنظیمشده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
color
و linestyle
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی با رنگ و سبک خط متفاوت
plt.plot(x, y, color='red', linestyle='--')
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با رنگ و سبک خط متفاوت")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
تغییر مارکرها (Changing Markers)
برای تغییر مارکرها در نمودار خطی، میتوانید از پارامتر marker
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی با مارکرهای متفاوت
plt.plot(x, y, marker='o', markersize=8, markerfacecolor='blue', markeredgecolor='black')
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با مارکرهای متفاوت")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
plt.text()
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن متن به نمودار
plt.text(3, 5, 'این یک متن است', fontsize=12, color='red')
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با متن اضافه")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
افزودن حاشیهنویسی (Adding Annotations)
برای افزودن حاشیهنویسی به نمودار، میتوانید از تابع plt.annotate()
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن حاشیهنویسی به نمودار
plt.annotate('نقطه مهم', xy=(3, 5), xytext=(4, 6),
arrowprops=dict(facecolor='black', shrink=0.05))
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با حاشیهنویسی")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
با این تنظیمات پیشرفته، شما میتوانید نمودارهای خود را به شکلی حرفهایتر و جذابتر سفارشی کنید. در بخش بعدی، به سراغ رسم نمودارهای پیشرفتهتر مانند نمودارهای چندگانه و سهبعدی خواهیم رفت.
plt.subplots()
استفاده کنید.
رسم چند نمودار در یک Figure
import matplotlib.pyplot as plt
import numpy as np
# دادههای نمونه
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
# ایجاد یک Figure و دو Axes
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(10, 5))
# رسم نمودار اول
ax1.plot(x, y1, color='blue')
ax1.set_title('نمودار سینوسی')
ax1.set_xlabel('محور X')
ax1.set_ylabel('محور Y')
# رسم نمودار دوم
ax2.plot(x, y2, color='red')
ax2.set_title('نمودار کسینوسی')
ax2.set_xlabel('محور X')
ax2.set_ylabel('محور Y')
# نمایش نمودارها
plt.tight_layout()
plt.show()
در این کد، plt.subplots(1, 2, figsize=(10, 5))
یک Figure با دو Axes در یک ردیف ایجاد میکند. سپس هر Axes به طور مستقل برای رسم نمودارهای مختلف استفاده میشود.
mpl_toolkits.mplot3d
استفاده کنید.
رسم یک نمودار سهبعدی ساده
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
# دادههای نمونه
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))
# ایجاد یک Figure و Axes سهبعدی
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# رسم نمودار سهبعدی
ax.plot_surface(x, y, z, cmap='viridis')
# افزودن عنوان و برچسبها
ax.set_title('نمودار سهبعدی')
ax.set_xlabel('محور X')
ax.set_ylabel('محور Y')
ax.set_zlabel('محور Z')
# نمایش نمودار
plt.show()
در این کد، fig.add_subplot(111, projection='3d')
یک Axes سهبعدی ایجاد میکند و ax.plot_surface(x, y, z, cmap='viridis')
یک سطح سهبعدی را رسم میکند.
plt.contour()
استفاده کنید:
import matplotlib.pyplot as plt
import numpy as np
# دادههای نمونه
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = np.sin(np.sqrt(x**2 + y**2))
# رسم نمودار کانتور
plt.contour(x, y, z, levels=20, cmap='viridis')
# افزودن عنوان و برچسبها
plt.title('نمودار کانتور')
plt.xlabel('محور X')
plt.ylabel('محور Y')
# نمایش نمودار
plt.colorbar()
plt.show()
نمودار قطبی (Polar Plot)
نمودار قطبی برای نمایش دادهها در مختصات قطبی استفاده میشود. برای رسم یک نمودار قطبی، میتوانید از تابع plt.polar()
استفاده کنید:
import matplotlib.pyplot as plt
import numpy as np
# دادههای نمونه
theta = np.linspace(0, 2 * np.pi, 100)
r = np.abs(np.sin(5 * theta))
# رسم نمودار قطبی
plt.polar(theta, r)
# افزودن عنوان
plt.title('نمودار قطبی')
# نمایش نمودار
plt.show()
با این مثالها، شما اکنون میتوانید نمودارهای پیشرفتهتری را با Matplotlib رسم کنید. در بخش بعدی، به سراغ کار با دادههای واقعی و نحوه پردازش و نمایش آنها خواهیم رفت.
pandas
این کار را بسیار ساده میکنند.
بارگذاری دادهها از یک فایل CSV
فرض کنید یک فایل CSV به نام data.csv
دارید که شامل دادههای زیر است:
Year,Revenue,Profit
2018,100000,20000
2019,120000,25000
2020,150000,30000
2021,180000,35000
2022,200000,40000
برای بارگذاری این دادهها و رسم نمودار، میتوانید از کد زیر استفاده کنید:
import pandas as pd
import matplotlib.pyplot as plt
# بارگذاری دادهها از فایل CSV
data = pd.read_csv('data.csv')
# نمایش چند ردیف اول دادهها
print(data.head())
# رسم نمودار خطی برای Revenue و Profit
plt.plot(data['Year'], data['Revenue'], label='Revenue', marker='o')
plt.plot(data['Year'], data['Profit'], label='Profit', marker='o')
# افزودن عنوان و برچسبها
plt.title('Revenue و Profit بر اساس سال')
plt.xlabel('سال')
plt.ylabel('مقدار')
# افزودن Legend
plt.legend()
# نمایش نمودار
plt.show()
در این کد، pd.read_csv('data.csv')
دادهها را از فایل CSV بارگذاری میکند و data.head()
چند ردیف اول دادهها را نمایش میدهد. سپس با استفاده از plt.plot()
، نمودارهای خطی برای Revenue
و Profit
رسم میشوند.
pandas
مدیریت کنید:
import pandas as pd
import matplotlib.pyplot as plt
# دادههای نمونه با مقادیر گمشده
data = pd.DataFrame({
'Year': [2018, 2019, 2020, 2021, 2022],
'Revenue': [100000, 120000, None, 180000, 200000],
'Profit': [20000, 25000, 30000, None, 40000]
})
# پر کردن مقادیر گمشده با میانگین
data['Revenue'].fillna(data['Revenue'].mean(), inplace=True)
data['Profit'].fillna(data['Profit'].mean(), inplace=True)
# رسم نمودار خطی برای Revenue و Profit
plt.plot(data['Year'], data['Revenue'], label='Revenue', marker='o')
plt.plot(data['Year'], data['Profit'], label='Profit', marker='o')
# افزودن عنوان و برچسبها
plt.title('Revenue و Profit بر اساس سال')
plt.xlabel('سال')
plt.ylabel('مقدار')
# افزودن Legend
plt.legend()
# نمایش نمودار
plt.show()
در این کد، data['Revenue'].fillna(data['Revenue'].mean(), inplace=True)
مقادیر گمشده در ستون Revenue
را با میانگین مقادیر موجود پر میکند.
import pandas as pd
import matplotlib.pyplot as plt
# بارگذاری دادهها از فایل CSV
data = pd.read_csv('data.csv')
# رسم هیستوگرام برای Revenue
plt.hist(data['Revenue'], bins=10, color='blue', edgecolor='black')
# افزودن عنوان و برچسبها
plt.title('توزیع Revenue')
plt.xlabel('Revenue')
plt.ylabel('فراوانی')
# نمایش نمودار
plt.show()
در این کد، plt.hist(data['Revenue'], bins=10, color='blue', edgecolor='black')
یک هیستوگرام از ستون Revenue
رسم میکند.
با این مثالها، شما اکنون میتوانید دادههای واقعی را بارگذاری کنید، پردازش کنید و سپس با استفاده از Matplotlib آنها را به صورت نمودار نمایش دهید. در بخش بعدی، به سراغ ذخیره و نمایش نمودارها خواهیم رفت.
plt.savefig()
استفاده کنید.
ذخیره نمودار در فرمت PNG
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی ساده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# ذخیره نمودار در فرمت PNG
plt.savefig('line_plot.png')
# نمایش نمودار
plt.show()
در این کد، plt.savefig('line_plot.png')
نمودار را در فایل line_plot.png
ذخیره میکند. شما میتوانید فرمت فایل را به دلخواه تغییر دهید، مثلاً line_plot.pdf
یا line_plot.svg
.
ذخیره نمودار با کیفیت بالا
اگر میخواهید نمودار را با کیفیت بالا ذخیره کنید، میتوانید از پارامتر dpi
(نقاط در اینچ) استفاده کنید:
plt.savefig('line_plot_high_quality.png', dpi=300)
%matplotlib inline
در ابتدای Notebook استفاده کنید:
%matplotlib inline
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی ساده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
نمایش نمودار در IDEها
اگر از یک IDE مانند PyCharm یا VS Code استفاده میکنید، معمولاً نمودارها در یک پنجره جداگانه نمایش داده میشوند. برای نمایش نمودار، کافی است از تابع plt.show()
استفاده کنید:
import matplotlib.pyplot as plt
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی ساده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
نمایش نمودار در وبسایتها
اگر میخواهید نمودارها را در یک وبسایت نمایش دهید، میتوانید آنها را در فرمتهایی مانند PNG یا SVG ذخیره کنید و سپس در HTML استفاده کنید:
<img src="line_plot.png" alt="نمودار خطی">
یا اگر از فرمت SVG استفاده میکنید:
<object data="line_plot.svg" type="image/svg+xml"></object>
figsize
استفاده کنید:
import matplotlib.pyplot as plt
# ایجاد یک Figure با اندازه مشخص
plt.figure(figsize=(10, 5))
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با اندازه تنظیمشده")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
استفاده از سبکهای پیشتعریف شده
Matplotlib چندین سبک پیشتعریف شده دارد که میتوانید از آنها برای تغییر ظاهر نمودارها استفاده کنید:
import matplotlib.pyplot as plt
# استفاده از سبک 'ggplot'
plt.style.use('ggplot')
# دادههای نمونه
x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]
# رسم نمودار خطی
plt.plot(x, y)
# افزودن عنوان و برچسبها
plt.title("نمودار خطی با سبک ggplot")
plt.xlabel("محور X")
plt.ylabel("محور Y")
# نمایش نمودار
plt.show()
با این تنظیمات، شما میتوانید نمودارهای خود را به شکلی حرفهایتر ذخیره و نمایش دهید. در بخش بعدی، به سراغ نکات و ترفندهای مفید برای کار با Matplotlib خواهیم رفت.
به دو شکل می توانید در دوره شرکت کنید. در صورتی که عضویت ویژه سایت را تهیه کنید، به مدت یک ماه تمام دوره های سایت و دیگر امکانات اعضای ویژه برای شما باز خواهد بود. در حالت دیگر می توانید خود این دوره را به صورت مجزا تهیه کنید که در این صورت هیچ محدودیت زمانی وجود ندارد و این دوره برای همیشه برای شما قابل استفاده خواهد بود.
مطالعه درس های بیشتر فقط برای اعضای ویژه امکان پذیر است.