کتابخانه matplotlib را به نوعی می‌توان پدربزرگ کتابخانه‌های مصورسازی پایتون دانست و استفاده از آن بسیار آسان است.

ناگفته پیداست که اولین قدم ایمپورت کردن کتابخانه matplotlib است.

import matplotlib.pyplot as plt

 

همچنین لازم است کتابخانه‌های numpy و pandas را هم ایمپورت کنیم؛ برای کار کردن با آرایه‌ها و دیتافریم‌ها به این دو کتابخانه نیاز پیدا می‌کنیم

import numpy as np

import pandas as pd

 

فایل csv داده‌های سهام که در می‌توانید از اینجا دانلود کنید را با استفاده از کتابخانه pandas باز می‌کنیم و در یک متغیر ذخیره می‌کنیم

stock_df = pd.read_csv(‘stock.csv’)

 

با فراخوانی این متغیر چند سطر ابتدایی و انتهایی داده‌ها را مشاهده می‌کنیم:

مصورسازی داده

 

همانطور که مشاهده می‌کنید، قیمت چند سهم مختلف در چند سال متوالی  در این دیتاست آمده است.

حالا می‌خواهیم  داده‌های یک ستون را رسم کنیم تا دید بهتری نسبت به تغییرات قیمت سهم در طول چند سال به دست آوریم:

stock_df.plot(x = 'Date' , y = 'AAPL' , label = 'Apple Stock Prices' , linewidth = ۳)

نتیجه به صورت زیر خواهد بود:

تابع plot در کتابخانه matplotlib

اگر بخواهیم یک برچسب برای ستون عمودی هم داشته باشیم از کد زیر استفاده می‌کنیم:

plt.ylabel('pice')

برای جابه‌جا کردن لیبل نمودار:

plt.legend(loc = 'upper right')

برای اضافه کردن عنوان نمودار:

plt.title('First Apple Plot')

 

نمودار scatter plot

برای رسم نمودار scatter plot از تغییرات روزانه چند سهم در روزهای مختلف استفاده می‌کنیم که می‌توانید داده‌های مربوط به آن را از اینجا دانلود کنید.

برای اینکه ببینیم آیا بین تغییرات دو سهم اپل و sp500 ارتباطی وجود دارد یا خیر آنها را نسبت به یکدیگر روی محورهای x و y رسم می‌کنیم:

x = daily_return_df['AAPL']

y = daily_return_df['sp500']

plt.scatter(x,y)

نمودار پراکندگی پایتون

همانطور که می‌بنیید، به نوعی ارتباطی به محورهای x و y  وجود دارد. در واقع می‌توان دید که برای هر دو نمودار x و y بیشترین تغییرات در اطراف صفر قرار دارند.

نمودار pie chart

این نمودار در کابردهای مالی وقتی می‌تواند بسیار کاربردی باشد که بخواهیم میزان سهم‌های که داریم را مصور سازی کنیم و در یک نگاه متوجه شویم که کل سرمایه ما به کدام سهم‌ها اختصاص دارند.

values = [۲۰, ۵۵, ۵, ۱۷, ۴]

colors = ['g', 'r', 'y', 'b', 'm']

labels = ['AAPL', 'GOOG', 'T', 'TSLA', 'AMZN']



plt.figure(figsize = (۷,۷))

plt.pie(values, colors=colors, labels=labels)

نمودار pie chart کتابخانه matplotlib

حالا اگر بخواهیم یکی از سهم‌ها را با تاکیید بیشتری نمایش دهیم، می‌توانیم از پارامتر explode استفاده کنیم.

به عنوان مثال اگر بخواهیم تاکید بیشتری رو سهم گوگل داشته باشیم، explode  را به صورت زیر تعریف می‌کنیم:

explode = [۰, ۰.۲, ۰, ۰, ۰]

 

و آن را در ورودی‌های رسم پای چارت جا می‌دهیم:

plt.pie(values, colors=colors, labels=labels, explode=explode)

نمودار پای چارت

هیستوگرام

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

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

بهتر است اولین کاری که انجام می‌دهیم این باشد که متوسط تغییرات را حساب کنیم:

mu = daily_return_df['AAPL'].mean()

 

و پس از آن انحراف از معیار (Standard Deviation) را حساب می‌کنیم:

sigma = daily_return_df['AAPL'].std()

 

حالا برای رسم هیستوگرام:

num_bins = ۴۰

plt.figure(figsize=(7,5))

plt.hist(daily_return_df['AAPL'], num_bins)

نمودار هیستوگرام داده های سهام

همانطور که در نمودار مشاهده می‌شود، در اکثر روزها تغییرات سهام صفر بوده است؛ که می‌دانیم تا حد زیادی منطقی است. چرا که قیمت سهام، به‌ویژه سهامی که پایدار هستند، در طول یک روز تغییرات چندانی را تجربه نمی‌کنند. اما بعضی روزها هم میزان سود به حدود ۵درصد رسیده و برخی روزهای دیگر به -۵درصد. همچنین روزهایی با ۱۰درصد یا -۱۰درصد وجود دارد که شاید بتوان آنها را جزو داده‌های پرت حساب کرد.

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

plt.grid()

plt.title('Historam: Mu =' + str(mu)+ ', sigma=' + str(sigma))

نمودار هیستوگرام کتابخانه matplotlib پایتون

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

برای رسم این نمودارها باز هم سراغ داده‌های قیمت سهام می‌رویم:

stock_df.plot(x='Date', y = ['AAPL', 'sp500'], linewidth = ۳)

نمودارهای چندگانه پایتون

زیرنمودارها

برای داشتن دو نمودار در کنار یکدیگر به صورت زیر عمل می‌کنیم:

plt.figure(figsize=(8,5))

plt.subplot(1,2,1)

plt.plot(stock_df['AAPL'], 'r--')

plt.grid

plt.subplot(1,2,2)

plt.plot(stock_df['sp500'], 'b')

plt.grid

زیرنمودار افقی پایتون

حالا اگر بخواهیم نمودار دوم زیر نمودار اول نمایش داده شود، کافی است در پارامترهای sublot دوسطر و یک ستون را مشخص کنیم؛

plt.figure(figsize=(8,8))

plt.subplot(2,1,1)

plt.plot(stock_df['AAPL'], 'r--')

plt.grid()

plt.subplot(2,1,2)

plt.plot(stock_df['sp500'], 'b')

plt.grid()

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

نمودار سه بعدی

برای این کار لازم از جعبه‌ ابزار toolkit  کتابخانه matplotlib استفاده کنیم. اولین قدم ایمپورت کردن این toolkit‌ است:

from mpl_toolkits.mplot3d import Axes3D

 

سپس، برای رسم یک نمودار سه بعدی:

fig = plt.figure(figsize=(6,6))

ax = fig.add_subplot(111, projection = '۳d')




x = daily_return_df['AAPL']

y = daily_return_df['GOOG']

z =  daily_return_df ['sp500']

ax.scatter(x, y, z, c = 'r', marker = 'o')




ax.set_xlabel ('AAPL')

ax.set_ylabel ('GOOG')

ax.set_zlabel ('sp500')

 

نمودار سه بعدی پایتون

نمودار جعبه‌ای

بهتر است ابتدا کمی با نمودار جعبه‌ای آشنا شویم:

نمودار جعبه ای

نمودار جعبه‌ای، معیاری از چگونگی توزیع داده‌ در یک دیتاست در اختیار ما قرار می‌دهند. در واقع دیتاست ما به ۴ تا یک چهارم تقسیم می‌شود. شروع نمودار جعبه‌ای کوچیک‌ترین مقدار در دیتاست (Minimum) و انتهای آن حداکثر مقدار (Maximum) است. در جعبه رسم شده هم از چارک اول تا چارک سوم جا گرفته‌اند.

اطلاعات مهمی که می‌توان از این نمودار کسب کرد عبارتند از:

میانه (Median): میانه جایی است که اگر داده‌ها را از کوچک به بزرگ مرتب کنیم، ۵۰درصد داده‌ها قبل از آن و ۵۰درصد داده‌ها بعد از آن قرار دارند. میانه با یک خط درون جعبه مشخص می‌شود.

 چارک اول (Q1): جایی که ۲۵درصد داده‌ها از آن کوچک‌تر هستند.

چارک سوم(Q3): جایی که ۷۵درصد داده‌ها از آن کوجک‌تر هستند.

دامنه میان چارکی (IQR): فاصله بین چارک اول و سوم، که اضلاع مستطیل نمودار جعبه‌ای هم هست.

داده‌های پرت (outliers): داده‌های پرت به صورت دایره‌های روی خط افقی نمایش داده می‌شوند. معمولا داده‌هایی که در فاصله Q3+1.5IQR قرار دارند را جزو داده‌های پرت حساب می‌کنیم.

برای رسم این نمودار از ۴ دیتای ساختگی با  توزیع نرمال استفاده می‌کنیم:‌

np.random.seed(20)
data_1 = np.random.normal(200, 20, 2000)

data_2 =  np.random.normal(60, 30, 2000)

data_3 =  np.random.normal(70, 20, 2000)

data_4 =  np.random.normal(40, 5, 2000)

 

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

data = [data_1, data_2, data_3, data_4]

fig = plt.figure(figsize=(10, 7))

ax = fig.add_subplot(111)




bp = ax.boxplot(data)

 

نمودار جعبه ای پایتون

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

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید