انجمن هوش مصنوعی دانشگاه اصفهان
معرفی کتابخانه seaborn (بخش اول)
کتابخانه seaborn چیست؟
کتابخانه seaborn یک کتابخانه تجسم داده پایتون بر اساس matplotlibاست. این یک رابط سطح بالا برای ترسیم گرافیک های آماری جذاب و آموزنده فراهم می کند.
چرا کتابخانه seaborn را انتخاب کنیم؟
1) به شما کمک میکند داده های خود را کشف و درک کنید.
2) توابع رسم آن بر روی قاب های داده و آرایه های حاوی مجموعه داده های کامل عمل می کند.
3) رابط برنامه نویسی اپلیکیشن(API)اعلانی مبتنی بر مجموعه داده به شما این امکان را می دهد که به جای تمرکز روی جزئیات نحوه ترسیم آنها، روی عناصر مختلف نمودارهای خود تمرکز کنید.
نصب seaborn
1) به کمک دستور pip
pip install seaborn
1) با استفاده از محیط Anaconda
conda install seaborn
برای اطلاعات بیشترروی این لینک کلیک کنید.
بعد از نصب آن میتوانید آن را با کلمه کلیدی importبه برنامه ی خود اضافه کنید و برای سهولت کار در فراخوانی آن میتوان برای کتابخانه یک اسم جایگزین انتخاب کرد:
import seaborn as sns
شروع کار با seaborn
در ابتدا باید کتابخانه های مورد نظر خود را به برنامه اضافه کنیم و از نام اختصاری آنها در برنامه ی خود استفاده می کنیم:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
نمودار های روابط آماری:
همانطور که میدانید پیدا کردن الگوی بین داده ها و بررسی روابط آماری میان مقادیر یک دیتاست منجر به درک درست و تحلیلی مناسب می شود.
تابع RelPlot:
این تابع دسترسی به چندین تابع مختلف در سطح محور را فراهم می کند که رابطه بین دو متغیر را با نگاشت معنایی زیر مجموعه ها نشان می دهد.
tips = sns.load_dataset("tips") #load dataset
sns.relplot(x="total_bill", y="tip", data=tips)
به کمک فراپارامتر hue می توانیم وضعیت یک متغیر را نسبت به یک متغیر دیگر در یک نمودار تجسم کنیم. (این فراپارامتر در این کتابخانه بسیار مهم و کاربردیست و در ادامه زیاد استفاده می شود):
sns.relplot(x="total_bill", y="tip", hue="smoker", data=tips)
به کمک فراپارامتر Size ، می توان مقادیر را بر اساس اندازه گروه بندی کنیم:
sns.relplot(x="total_bill", y="tip", size="size", data=tips)
اندازه ی عناصر نمودار بالا را به کمک Sizes می توانیم تغییر دهیم:
sns.relplot(x="total_bill", y="tip", size="size", sizes=(15, 200), data=tips)
فراپارامتر kind نوعی طرح برای ترسیم بوده که دارای دو گزینه ی line و scatter است:
df = pd.DataFrame(dict(time=np.arange(500), value=np.random.randn(500).cumsum()))
g = sns.relplot(x="time", y="value", kind="line", data=df)
g.figure.autofmt_xdate()
از آنجایی که همیشه نمودار relplot، y را به عنوان تابعی از x رسم می کند اگر فراپارامتر Sort برابر False قرار گیرد مقادیر ما نامرتب روی نمودار پیاده سازی می شوند:
df = pd.DataFrame(np.random.randn(500, 2).cumsum(axis=0), columns=["x", "y"])
sns.relplot(x="x", y="y", sort=False, kind="line", data=df)
فراپارامتر markers شی تعیین کننده نحوه رسم نشانگرها برای سطوح مختلف متغیر سبک است. تنظیم روی True از نشانگرهای پیشفرض استفاده میکند، یا میتوانید فهرستی از نشانگرها یا سطوح نگاشت فرهنگ لغت متغیر سبک را به نشانگرها منتقل کنید. با تنظیم روی False خطوط بدون نشانگر ترسیم می شود.
فراپارامتر dashes شی تعیین کننده نحوه رسم خطوط برای سطوح مختلف متغیر سبک است. تنظیم روی True از کدهای خط تیره پیشفرض استفاده میکند، یا میتوانید فهرستی از کدهای خط تیره یا سطوح نگاشت فرهنگ لغت متغیر سبک را به کدهای خط تیره منتقل کنید. تنظیم روی False از خطوط ثابت برای همه زیر مجموعه ها استفاده می کند
fmri = sns.load_dataset("fmri") #load dataset
sns.relplot(x="timepoint", y="signal", hue="region", style="event", dashes=False, markers=True, kind="line", data=fmri)
پارامتر های row, col متغیرهایی که زیرمجموعه ها را برای ترسیم در وجوه مختلف تعریف می کنند:
sns.relplot(x="timepoint", y="signal", hue="subject",col="region", row="event", height=3, kind="line", estimator=None, data=fmri)
متغیر aspect نسبت ابعاد هر وجه به صورت ارتفاع * عرض هر وجه را به اینچ می دهد:
sns.relplot(x="timepoint", y="signal", hue="event", style="event", col="subject", col_wrap=5, height=3, aspect=.75, linewidth=2.5, kind="line", data=fmri.query("region == 'frontal'"))
تابع Cubehelix Palette
تابع cubehelix_palette() یک نقشه رنگی با روشنایی خطی کاهش (یا افزایش) تولید می کند.این تابع به کاربر کنترل بیشتری بر ظاهر پالت می دهد و مجموعه ای از پیش فرض های متفاوت دارد:
dots = sns.load_dataset("dots").query("align == 'dots'")
palette = sns.cubehelix_palette(light=.8, n_colors=6)
sns.relplot(x="time", y="firing_rate", hue="coherence", style="choice", palette=palette, kind="line", data=dots)
ادامه مطلب را در قسمت بعد بخوانید ...
انجمن هوش مصنوعی دانشگاه اصفهان
محمد جعفرپور
مریم سادات صفوی
دانیال توکلی
مطلبی دیگر از این انتشارات
خداحافظ pandas، از Terality استفاده کنید.
مطلبی دیگر از این انتشارات
چگونه پایتون را برای هوش مصنوعی بخوانیم؟
مطلبی دیگر از این انتشارات
علم داده چیست و چه کاربردی دارد