ggplot2 در زبان برنامه نویسی R
اهداف یادگیری
- با استفاده از ggplot نمودارهای scatter plots, boxplots, and time series plots تولید کنید.
- تنظیمات universal plot را تنظیم کنید.
- توضیح دهید که faceting چیست و در ggplot از faceting استفاده کنید.
- زیبایی شناسی طرح ggplot موجود (از جمله برچسب های محور و رنگ) را اصلاح کنید.
- نمودارهای پیچیده و سفارشی شده را از داده ها در یک قاب داده بسازید.
با بارگذاری بسته های مورد نیاز شروع می کنیم. ggplot2 در بسته tidyverse گنجانده شده است.
library(tidyverse)
اگر هنوز در فضای کاری نیست، دادهها را بارگیری کنید.
surveys_complete <- read_csv(“data/surveys_complete.csv”)
رسم با ggplot2
ggplot2 یک بسته ترسیمی است که دستورات مفیدی را برای ایجاد نمودارهای پیچیده از داده ها در یک قاب داده ارائه می دهد. این یک رابط برنامهریزیتر برای تعیین اینکه چه متغیرهایی باید رسم شوند، چگونه نمایش داده میشوند و ویژگیهای بصری کلی را فراهم میکند.
بنابراین، تنها در صورتی نیاز به تغییرات حداقلی داریم که داده های اساسی تغییر کنند یا اگر تصمیم به تغییر از نمودار نواری به نمودار پراکندگی داشته باشیم. این به ایجاد طرحهای با کیفیت انتشار با حداقل تنظیمات و تغییرات کمک میکند.
ggplot2 به نام خود بسته اشاره دارد. هنگام استفاده از بسته، از تابع ggplot() برای تولید نمودارها استفاده می کنیم، و بنابراین به ارجاعات استفاده از تابع به عنوان ggplot() و بسته به عنوان یک کل به عنوان ggplot2 اشاره می شود.
نمودارهای ggplot2 با دادههایی در فرمت طولانی، یعنی یک ستون برای هر متغیر و یک ردیف برای هر مشاهده، بهترین کار را دارند. داده های خوب ساختار یافته در زمان ایجاد ارقام با ggplot2 در وقت شما صرفه جویی می کند
گرافیک ggplot لایه به لایه با افزودن عناصر جدید ساخته می شود. افزودن لایه ها به این روش، انعطاف پذیری و سفارشی سازی گسترده نقشه ها را امکان پذیر می کند.
زبان برنامه نویسی R
برای ساختن یک ggplot، از الگوی اصلی زیر استفاده می کنیم که می تواند برای انواع مختلف نمودارها استفاده شود:
ggplot(data = <DATA>, mapping = aes(<MAPPINGS>)) + <GEOM_FUNCTION>()
از تابع ggplot() استفاده کنید و نمودار را با استفاده از آرگومان داده به یک فریم داده خاص متصل کنید
ggplot(data = surveys_complete)
با انتخاب متغیرهایی که قرار است ترسیم شوند و نحوه نمایش آنها در نمودار، به عنوان مثال، به عنوان موقعیت x/y یا ویژگی هایی مانند اندازه، شکل، رنگ و غیره، یک نگاشت زیبایی شناختی (با استفاده از تابع زیبایی (aes)) تعریف کنید.
ggplot(data = surveys_complete, mapping = aes(x = weight, y = hindfoot_length))
اضافه کردن “geoms” – نمایش های گرافیکی داده ها در طرح (نقاط، خطوط، میله ها). ggplot2 بسیاری از geom های مختلف را ارائه می دهد. ما امروز از برخی موارد رایج استفاده خواهیم کرد، از جمله:
- geom_point() برای نمودارهای پراکنده، نمودارهای نقطه و غیره.
- geom_boxplot() برای، خوب، boxplots!
- geom_line() برای خطوط روند، سری های زمانی و غیره.
برای افزودن یک geom به طرح از + عملگر استفاده کنید. از آنجایی که دو متغیر پیوسته داریم، ابتدا از geom_point() استفاده می کنیم:
ggplot(data = surveys_complete, aes(x = weight, y = hindfoot_length)) + geom_point()
برنامه نویسی R
بسته ggplot2 بسیار مفید است زیرا به شما امکان می دهد اشیاء ggplot موجود را تغییر دهید.
این بدان معنی است که شما می توانید به راحتی “الگوهای” طرح را تنظیم کنید و به راحتی انواع مختلف نمودارها را کاوش کنید، بنابراین نمودار بالا نیز می تواند با کدهایی مانند زیر تولید شود:
# Assign plot to a variable
surveys_plot <- ggplot(data = surveys_complete,
mapping = aes(x = weight, y = hindfoot_length))
# Draw the plot
surveys_plot +
geom_point()
یادداشت
هر چیزی که در تابع ggplot() قرار می دهید با هر لایه geom که اضافه می کنید قابل مشاهده است (یعنی اینها تنظیمات نمودار جهانی هستند). این شامل محور x و y می شود که در aes() تنظیم کرده اید.
- شما همچنین می توانید زیبایی شناسی را برای یک geom مشخص مستقل از زیبایی شناسی تعریف شده در تابع ggplot() تعیین کنید.
- علامت + که برای افزودن لایه ها استفاده می شود باید در انتهای هر خط حاوی یک لایه قرار گیرد. اگر به جای آن، علامت + در خط قبل از لایه دیگر اضافه شود، ggplot2 لایه جدید را اضافه نمی کند و یک پیغام خطا برمی گرداند.
- ممکن است متوجه شوید که ما گاهی به “ggplot2” و گاهی “ggplot” اشاره می کنیم. برای روشن شدن، «ggplot2» نام جدیدترین نسخه بسته است. با این حال، هر زمان که خود تابع را فراخوانی کنیم، فقط “ggplot” نامیده می شود.
- نسخه قبلی بسته ggplot2 به نام ggplot که حاوی تابع ggplot() بود اکنون پشتیبانی نمی شود و به منظور کاهش نصب تصادفی و سردرگمی بیشتر از CRAN حذف شده است.
# This is the correct syntax for adding layers
surveys_plot +
geom_point()
# This will not add the new layer and will return an error message
surveys_plot
+ geom_point()
چالش (اختیاری)
نمودارهای پراکندگی می توانند ابزارهای اکتشافی مفیدی برای مجموعه داده های کوچک باشند. برای مجموعه دادههایی با تعداد مشاهدات زیاد، مانند مجموعه دادههای Surves_complete، اضافهنقاط نقطهها میتواند محدودیتی برای نمودارهای پراکندگی باشد. یکی از راهبردهای مدیریت چنین تنظیماتی استفاده از ترکیب شش ضلعی است.
فضای طرح به شش ضلعی تبدیل شده است. به هر شش ضلعی بر اساس تعداد مشاهداتی که در محدوده آن قرار می گیرند، رنگی اختصاص داده می شود. برای استفاده از binning شش ضلعی با ggplot2، ابتدا بسته R hexbin را از CRAN نصب کنید:
install.packages(“hexbin”)
library(hexbin)
سپس از تابع geom_hex() استفاده کنید:
surveys_plot +
geom_hex()
نقاط قوت و ضعف نسبی نمودار بن شش ضلعی در مقایسه با نمودار پراکنده چیست؟ نمودار پراکندگی بالا را بررسی کنید و آن را با نمودار بن شش ضلعی که ایجاد کردید مقایسه کنید.
طرح های خود را به صورت مکرر بسازید
ساخت قطعات با ggplot2 معمولاً یک فرآیند تکراری است. ما با تعریف مجموعه داده ای که استفاده می کنیم شروع می کنیم، محورها را می چینیم و یک geom را انتخاب می کنیم:
ggplot(data = surveys_complete, aes(x = weight, y = hindfoot_length)) + geom_point()
سپس، ما شروع به اصلاح این نمودار می کنیم تا اطلاعات بیشتری از آن استخراج کنیم. به عنوان مثال، ما می توانیم شفافیت (آلفا) را برای جلوگیری از ترسیم بیش از حد اضافه کنیم:
ggplot(data = surveys_complete, aes(x = weight, y = hindfoot_length)) + geom_point(alpha = 0.1)
ما همچنین می توانیم برای تمام نقاط رنگ اضافه کنیم:
ggplot(data = surveys_complete, mapping = aes(x = weight, y = hindfoot_length)) + geom_point(alpha = 0.1, color = “blue”)
یا برای رنگ آمیزی متفاوت هر گونه در نمودار، می توانید از یک بردار به عنوان ورودی رنگ آرگومان استفاده کنید. ggplot2 یک رنگ متفاوت مطابق با مقادیر مختلف در بردار ارائه می دهد. در اینجا یک مثال است که در آن ما با species_id رنگ می کنیم:
ggplot(data = surveys_complete, mapping = aes(x = weight, y = hindfoot_length)) + geom_point(alpha = 0.1, aes(color = species_id))
نمودار جعبه
ما می توانیم از نمودارهای جعبه برای تجسم توزیع وزن در هر گونه استفاده کنیم:
ggplot(data = surveys_complete, mapping = aes(x = species_id, y = weight)) + geom_boxplot()
با اضافه کردن نقاط به نمودار جعبه، می توانیم تصور بهتری از تعداد اندازه گیری ها و توزیع آنها داشته باشیم:
ggplot(data = surveys_complete, mapping = aes(x = species_id, y = weight)) + geom_boxplot(alpha = 0) + geom_jitter(alpha = 0.3, color = “tomato”)
رسم داده های سری زمانی
بیایید تعداد شمارش در سال را برای هر جنس محاسبه کنیم. ابتدا باید داده ها را گروه بندی کنیم و رکوردهای هر گروه را بشماریم:
yearly_counts <- surveys_complete %>%
count(year, genus)
دادههای Timelapse را میتوان بهعنوان نمودار خطی با سالها در محور x و شمارش در محور y مشاهده کرد:
ggplot(data = yearly_counts, aes(x = year, y = n)) +
geom_line()
متأسفانه، این کار نمی کند زیرا ما داده ها را برای همه جنس ها با هم ترسیم کردیم. ما باید به ggplot بگوییم که برای هر جنس خطی را با تغییر تابع زیبایی شناختی برای گنجاندن group = genus ترسیم کند:
ggplot(data = yearly_counts, aes(x = year, y = n, group = genus)) + geom_line()
اگر رنگ ها را اضافه کنیم (با استفاده از رنگ نیز به طور خودکار داده ها را گروه بندی می کنیم) قادر خواهیم بود جنس ها را در نمودار تشخیص دهیم:
ggplot(data = yearly_counts, aes(x = year, y = n, color = genus)) + geom_line()
دوره آموزشی زبان برنامه نویسی R »کلیک کنید» یک برنامه جامع است که بر توسعه محاسبات آماری و علم دادهها ، ایجاد اشکال گرافیکی و نمودارها و تحلیل سریهای زمانی، رگرسیون خطی و…. با استفاده از ابزار R تمرکز دارد.
سپاسگذاریم از وقتی که برای خواندن این مقاله گذاشتید
.
برای خرید لایسنس پاور بی ای Power BI کلیک کنید
.
برای مشاهده ویدیوهای آموزشی داده کاوی و هوش تجاری ما را در شبکه های اجتماعی دنبال کنید
Youtube Chanel :VISTA Data Mining
Aparat Chanel: VISTA Data Mining
Instagram Chanel: VISTA Data Mining
Telegram Chanel: VISTA Data Mining
Linkedin Chanel: VISTA Company