از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
پلات پراکنده 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

