از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پلات پراکنده Matplotlib با پلات های توزیع (نقشه مشترک) – آموزش و مثال
سرفصلهای مطلب
معرفی
کتابخانه های تجسم داده های زیادی در پایتون وجود دارد، با این حال Matplotlib محبوب ترین کتابخانه در بین همه آنهاست. محبوبیت Matplotlib به دلیل قابلیت اطمینان و کاربردی بودن آن است – قادر است هر دو طرح ساده و پیچیده را با کد کمی ایجاد کند. شما همچنین می توانید طرح ها را به روش های مختلف سفارشی کنید.
در این آموزش به آن خواهیم پرداخت چگونه یک طرح مشترک در Matplotlib ترسیم کنیم که شامل الف طرح پراکنده و متعدد قطعه های توزیع روی همان Figure
.
نمودارهای مشترک برای بررسی روابط بین داده های دو متغیره و همچنین توزیع آنها به طور همزمان استفاده می شود.
توجه داشته باشید: این نوع کار است بسیار مناسب تر برای کتابخانه هایی مانند Seaborn که دارای داخلی است jointplot()
تابع. با Matplotlib، یک Joint Plot را به صورت دستی و با استفاده از آن می سازیم GridSpec
و متعدد Axes
به جای اینکه Seaborn این کار را برای ما انجام دهد.
وارد کردن داده ها
ما از معروف استفاده خواهیم کرد مجموعه داده عنبیه، از آنجایی که می توانیم رابطه بین ویژگی هایی مانند SepalWidthCm
و SepalLengthCm
از طریق یک طرح پراکنده، اما همچنین توزیع های بین Species
ویژگی با در نظر گرفتن طول/عرض کاسبرگ خود، از طریق پلات های توزیع همزمان.
اجازه دهید import مجموعه داده و نگاهی به:
import pandas as pd
df = pd.read_csv('iris.csv')
print(df.head())
این نتیجه در:
Id SepalLengthCm SepalWidthCm PetalLengthCm PetalWidthCm Species
0 1 5.1 3.5 1.4 0.2 Iris-setosa
1 2 4.9 3.0 1.4 0.2 Iris-setosa
2 3 4.7 3.2 1.3 0.2 Iris-setosa
3 4 4.6 3.1 1.5 0.2 Iris-setosa
4 5 5.0 3.6 1.4 0.2 Iris-setosa
ما رابطه دو متغیره بین آن را بررسی خواهیم کرد SepalLengthCm
و SepalWidthCm
ویژگیهای اینجا، بلکه توزیعهای آنها. ما میتوانیم از دو طریق به این موضوع برخورد کنیم – با توجه به آنها Species
یا نه.
ما می توانیم کاملاً نادیده بگیریم Species
ویژگی، و به سادگی هیستوگرام های توزیع هر نمونه گل را رسم کنید. از سوی دیگر، میتوانیم نمودارهای توزیع هر نمونه گل را کد رنگ و رسم کنیم و تفاوت آنها را برجسته کنیم. Species
همچنین.
کاوش خواهیم کرد هر دو گزینهها در اینجا، با سادهتر شروع میشوند – بدون توجه به Species
در مجموع
یک طرح مشترک در Matplotlib با هیستوگرام های تک کلاسی ترسیم کنید
در رویکرد اول، ما فقط نمونه های گل را بارگذاری می کنیم و آنها را همانطور که هست رسم می کنیم، بدون توجه به آنها Species
.
ما از a استفاده خواهیم کرد GridSpec
برای سفارشی کردن چیدمان شکل خود، برای ایجاد فضا برای سه طرح مختلف و Axes
نمونه ها
برای استناد به GridSpec
سازنده، ما می خواهیم import آن را در کنار نمونه PyPlot:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
حال ، بیایید ما را بسازیم Figure
و ایجاد کنید Axes
اشیاء:
df = pd.read_csv('iris.csv')
fig = plt.figure()
gs = GridSpec(4, 4)
ax_scatter = fig.add_subplot(gs(1:4, 0:3))
ax_hist_y = fig.add_subplot(gs(0,0:3))
ax_hist_x = fig.add_subplot(gs(1:4, 3))
plt.show()
ما 3 ایجاد کرده ایم Axes
نمونه ها، با اضافه کردن نمودارهای فرعی به شکل، با استفاده از ما GridSpec
به عنوان مثال برای قرار دادن آنها. این منجر به یک Figure
با 3 خالی Axes
موارد:
اکنون که چیدمان و موقعیت یابی را در جای خود قرار داده ایم، تنها کاری که باید انجام دهیم این است که داده ها را رسم کنیم روی ما Axes
. بیایید اسکریپت را بهروزرسانی کنیم تا آن را ترسیم کنیم SepalLengthCm
و SepalWidthCm
ویژگی ها از طریق طرح پراکندگی، روی ما ax_scatter
محورها و هر یک از این ویژگی ها روی را ax_hist_y
و ax_hist_x
محورها:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
df = pd.read_csv('iris.csv')
fig = plt.figure()
gs = GridSpec(4, 4)
ax_scatter = fig.add_subplot(gs(1:4, 0:3))
ax_hist_x = fig.add_subplot(gs(0,0:3))
ax_hist_y = fig.add_subplot(gs(1:4, 3))
ax_scatter.scatter(df('SepalLengthCm'), df('SepalWidthCm'))
ax_hist_x.hist(df('SepalLengthCm'))
ax_hist_y.hist(df('SepalWidthCm'), orientation = 'horizontal')
plt.show()
ما تنظیم کرده ایم orientation
از ax_hist_y
به horizontal
به طوری که به صورت افقی ترسیم شود، روی در سمت راست نمودار پراکندگی، در همان جهتی که محورهای خود را با استفاده از GridSpec
:
این منجر به یک طرح مشترک از رابطه بین SepalLengthCm
و SepalWidthCm
ویژگی ها، و همچنین توزیع برای ویژگی های مربوطه.
یک طرح مشترک در Matplotlib با هیستوگرام های چند کلاسه ترسیم کنید
حال، مورد دیگری که ممکن است بخواهیم بررسی کنیم، توزیع این ویژگیها با توجه به Species
از گل، زیرا ممکن است بر دامنه طول و عرض کاسبرگ تأثیر بگذارد.
برای این، ما فقط از یک هیستوگرام برای هر محور، که در آن هر محور وجود دارد، استفاده نخواهیم کرد تمام نمونه های گل، اما در عوض، ما یک هیستوگرام را برای هر یک قرار می دهیم Species
روی هر دو محور
برای انجام این کار، ابتدا باید آن را تشریح کنیم DataFrame
ما قبلاً از گل استفاده کرده ایم Species
:
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
df = pd.read_csv('iris.csv')
setosa = df(df('Species')=='Iris-setosa')
virginica = df(df('Species')=='Iris-virginica')
versicolor = df(df('Species')=='Iris-versicolor')
species = df('Species')
colors = {
'Iris-setosa' : 'tab:blue',
'Iris-versicolor' : 'tab:red',
'Iris-virginica' : 'tab:green'
}
در اینجا ، ما فقط فیلتر کرده ایم DataFrame
، توسط Species
ویژگی در سه مجموعه داده جداگانه. این setosa
، virginica
و versicolor
مجموعه داده ها در حال حاضر فقط شامل نمونه های مربوطه خود هستند.
خوب همچنین میخواهید هر یک از این نمونهها را با رنگ متفاوتی رنگ کنید روی آنها Species
، هم در Scatter Plot و هم در Histograms. برای این ، ما به سادگی یک را قطع کرده ایم Series
از Species
ویژگی، و ساخته شده است colors
فرهنگ لغت، که ما از آن استفاده خواهیم کرد map()
را Species
از هر گل به یک رنگ بعد روی.
حالا بیایید خودمان را بسازیم Figure
، GridSpec
و Axes
موارد:
fig = plt.figure()
gs = GridSpec(4, 4)
ax_scatter = fig.add_subplot(gs(1:4, 0:3))
ax_hist_y = fig.add_subplot(gs(0,0:3))
ax_hist_x = fig.add_subplot(gs(1:4, 3))
در نهایت، میتوانیم نمودار پراکندگی و هیستوگرام را ترسیم کنیم و رنگها و جهتگیریهای آنها را بر اساس آن تنظیم کنیم:
ax_scatter.scatter(df('SepalLengthCm'), df('SepalWidthCm'), c=species.map(colors))
ax_hist_y.hist(versicolor('SepalLengthCm'), color='tab:red', alpha=0.4)
ax_hist_y.hist(virginica('SepalLengthCm'), color='tab:green', alpha=0.4)
ax_hist_y.hist(setosa('SepalLengthCm'), color='tab:blue', alpha=0.4)
ax_hist_x.hist(versicolor('SepalWidthCm'), orientation = 'horizontal', color='tab:red', alpha=0.4)
ax_hist_x.hist(virginica('SepalWidthCm'), orientation = 'horizontal', color='tab:green', alpha=0.4)
ax_hist_x.hist(setosa('SepalWidthCm'), orientation = 'horizontal', color='tab:blue', alpha=0.4)
plt.show()
این map()
نتیجه تماس در a Series
از رنگ ها:
0 tab:blue
1 tab:blue
2 tab:blue
3 tab:blue
4 tab:blue
...
145 tab:green
146 tab:green
147 tab:green
148 tab:green
149 tab:green
هنگامی که به c
استدلال از scatter()
تابع، رنگها را به این ترتیب به نمونهها اعمال میکند و به طور مؤثر هر نمونه را با رنگی متناسب با گونههای آن رنگآمیزی میکند.
برای هیستوگرام ها، ما به سادگی سه نمودار، یکی برای هر کدام را ترسیم کرده ایم Species
، با رنگ های مربوطه خود. شما می توانید یک را انتخاب کنید step
هیستوگرام در اینجا، و نیشگون گرفتن و کشیدن alpha
ارزش برای ایجاد توزیع هایی با ظاهر متفاوت.
اجرای این کد نتیجه می دهد:
حالا هر کدام Species
رنگ و توزیع خاص خود را دارد که جدا از سایر گلها ترسیم شده است. علاوه بر این، آنها با طرح Scatter Plot با رنگ کدگذاری شده اند، بنابراین یک طرح واقعا بصری است که به راحتی قابل خواندن و تفسیر است.
توجه داشته باشید: اگر رنگهای همپوشانی، مانند نارنجی که از هیستوگرامهای قرمز و آبی تشکیل شده است، حواستان را پرت میکند، تنظیم کنید histtype
به step
رنگ های پر شده را حذف می کند:
نتیجه
در این راهنما، نگاهی به روش رسم a انداخته ایم طرح مشترک در Matplotlib – یک طرح پراکندگی با پلات های توزیع همراه (هیستوگرام) روی هر دو محور طرح، برای بررسی توزیع متغیرهایی که خود طرح پراکندگی را تشکیل می دهند.
اگرچه این کار بیشتر برای کتابخانههایی مانند Seaborn که پشتیبانی داخلی از Joint Plots دارند، مناسب است، Matplotlib موتور اساسی است که Seaborn را قادر میسازد تا این طرحها را بدون زحمت انجام دهد.
اگر به تجسم دادهها علاقه دارید و نمیدانید از کجا شروع کنید، حتماً ما را بررسی کنید بسته کتاب روی تجسم داده ها در پایتون:
تجسم داده ها در پایتون با Matplotlib و Pandas کتابی است که برای جذب مبتدیان مطلق به پانداها و Matplotlib با دانش پایه پایتون طراحی شده است و به آنها اجازه می دهد تا پایه ای قوی برای کار پیشرفته با این کتابخانه ها ایجاد کنند – از طرح های ساده گرفته تا طرح های سه بعدی متحرک با دکمه های تعاملی.
این به عنوان یک راهنمای عمیق عمل می کند که همه چیزهایی را که باید در مورد پانداها و Matplotlib بدانید، از جمله روش ساخت انواع طرح هایی که در خود کتابخانه تعبیه نشده اند را به شما آموزش می دهد.
تجسم داده ها در پایتون، کتابی برای توسعه دهندگان پایتون مبتدی تا متوسط، شما را از طریق دستکاری ساده داده ها با پانداها راهنمایی می کند، کتابخانه های ترسیم هسته ای مانند Matplotlib و Seaborn را پوشش می دهد و به شما نشان می دهد که چگونه از کتابخانه های اعلامی و تجربی مانند Altair استفاده کنید. به طور خاص، در طول ۱۱ فصل، این کتاب ۹ کتابخانه پایتون را پوشش میدهد: Pandas، Matplotlib، Seaborn، Bokeh، Altair، Plotly، GGPlot، GeoPandas و VisPy.
این به عنوان یک راهنمای عملی و منحصر به فرد برای تجسم داده ها، در مجموعه ای از ابزارهایی که ممکن است در حرفه خود استفاده کنید، عمل می کند.
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-11 12:38:03