۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

ggplot ساده تر با ggcharts در R

با استفاده از بسته ggcharts R به راحتی با چند خط کد ساده تصاویر R را ایجاد کنید. به علاوه، نمودارها و نمودارهای به دست آمده، اشیاء ggplot قابل تنظیم هستند.

با استفاده از بسته ggcharts R به راحتی با چند خط کد ساده تصاویر R را ایجاد کنید. به علاوه، نمودارها و نمودارهای به دست آمده، اشیاء ggplot قابل تنظیم هستند.

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

این یک مثال سریع است. در زیر نمودار میله ای دمای بالا در بوستون در طول یک هفته کاری اخیر آمده است.

نمودار نواری با دمای 5 روز

گراف ایجاد شده توسط ggplot2 در R.

اگر می‌خواهید دنبال کنید، از این داده‌ها می‌آید:

Day <- factor(c("Mon", "Tues", "Wed", "Thurs", "Fri"), 
levels = c("Mon", "Tues", "Wed", "Thurs", "Fri"), ordered = TRUE)
HighTemp <- c(53, 55, 69, 34, 33)
bos_high_temps <- data.frame(Day, HighTemp)

این کد ggplot2 من است که نمودار را ساخته است:

library(ggplot2)
ggplot(bos_high_temps, aes(x=Day, y=HighTemp)) +
geom_col(color = "black", fill="#0072B2") +
theme_minimal() +
theme(panel.border = element_blank(), panel.grid.major = element_blank(),
panel.grid.minor = element_blank(), axis.line =
element_line(colour = "gray"),
plot.title = element_text(hjust = 0.5, size = 24),
plot.subtitle = element_text(hjust = 0.5, size = 20),
axis.text = element_text(size = 16)
)

اکنون این یک نمودار ggcharts با همان داده است:

نمودار میله ای با 5 میله که دمای بالای روزانه را نشان می دهد

گراف ایجاد شده توسط ggcharts در R.

و کد ggcharts برای آن نمودار:

library(ggcharts)
column_chart(bos_high_temps, x = Day, y = HighTemp)

این کد کمتری برای دریافت نتیجه مشابه است.

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

ggplot(bos_high_temps, aes(x = Day, y = HighTemp)) + geom_col()

گراف با نوارهای سیاه و پس زمینه خاکستری با خطوط شبکه

نمودار میله‌ای در ggplot با استفاده از پیش‌فرض‌ها.

راه‌هایی برای نوشتن کدهای زیادی برای سفارشی‌سازی ggplot وجود دارد. می‌توانید پیش‌فرض‌های جدید ggplot2 را تنظیم کنید، طرح زمینه خود را ایجاد کنید یا از قطعات کد RStudio استفاده کنید. اما اینها مستلزم این هستند که از قبل بدانید که چگونه سفارشی سازی را انجام دهید. اگر به طور مرتب داده‌ها را با بسته‌های مرتب تجسم می‌کنید، توصیه می‌کنم این مهارت‌ها را یاد بگیرید—دانش ggplot بسیار مفید است! اما برای افرادی که تازه شروع به کار کرده‌اند، یا افرادی که اغلب طرح‌ها را تولید نمی‌کنند، این ممکن است اولویت بالایی نداشته باشد.

توسعه دهندگان نرم افزار یک مشکل امنیتی زنجیره تامین دارند

ggcharts چیست؟

ggcharts یک بسته بسته بندی برای ggplot2 است. زیر مجموعه بسیار کوچکی از آنچه ggplot قادر به انجام آن است را انجام می دهد. با این حال، اشیاء R که با ggcharts ایجاد می کنید، اشیاء ggplot نیز هستند. و این بدان معناست که اگر می‌خواهید نتایج خود را بعداً تغییر دهید، می‌توانید کد سفارشی‌سازی ggplot را اضافه کنید. این می‌تواند بهترین هر دو دنیا را به شما بدهد – به شرطی که یکی از دوجین یا چند نوع تجسم موجود در بسته را انجام دهید. ggcharts در حال حاضر دارای عملکردهایی برای ایجاد نمودارهای میله ای (افقی، عمودی یا واگرا)، نمودارهای آب نبات چوبی (از جمله واگرا)، نمودارهای خطی، دمبل ها و اهرام است. ggcharts حداقل هنوز گزینه‌ای برای تجسم‌هایی مانند نمودارهای پراکنده یا نمودارهای جعبه نیست.

به نظر من برخی از ترفندهای اساسی در ggcharts نسبت به ggplot2 کمی ساده تر و شهودی تر است (اگرچه آنها بسیار محدودتر هستند). به عنوان مثال، نمودار نواری ggcharts پیش‌فرض فرض می‌کند که می‌خواهید نتایج را بر اساس مقدار y مرتب کنید (در مقابل نگه داشتن محور x در یک ترتیب خاص). خیلی اوقات دقیقاً همان چیزی است که شما می خواهید.

(برای انجام این کار با ggplot2، معمولاً باید مقادیر x خود را بر اساس مقدار y خود مرتب کنید، مانند aes(x=reorder(myxcolname, -myycolname)، y=myycolname)). )

با نمودارهای gg، اگر نمی‌خواهید بر اساس مقدار y مرتب کنید، فقط از آرگومان sort = FALSE استفاده کنید:

column_chart(bos_high_temps, x = Day, y = HighTemp, 
sort = FALSE)

جستجوی گزینه‌های توابعی مانند column_chart() با اجرای یک دستور راهنمای معمولی R مانند ?column_chart آسان است.

column_chart(
data,
x,
y,
facet = NULL,
...,
bar_color = "auto",
highlight = NULL,
sort = NULL,
horizontal = FALSE,
top_n = NULL,
threshold = NULL,
limit = NULL
)

آگومان های ggcharts

  • داده: مجموعه داده برای استفاده در نمودار میله ای.
  • x:  ستون نویسه یا عاملی از داده‌ها.
  • y: ستون عددی داده‌ها نشان‌دهنده طول نوار. در صورت عدم وجود، طول میله متناسب با تعداد هر مقدار در x خواهد بود.
  • وجه:  ستون نویسه یا عاملی از داده‌ها که گروه‌های وجهی را تعریف می‌کند
  • ...: آرگومان‌های اضافی به aes() ارسال شد.
  • bar_color:  نویسه. رنگ میله ها.
  • هایلایت:  نویسه. یک یا چند مقدار از x که باید در نمودار برجسته شوند.
  • مرتب سازی: منطقی است. آیا داده ها باید قبل از رسم مرتب شوند؟
  • افقی: منطقی. آیا طرح باید به صورت افقی باشد؟
  • top_n:  عددی. اگر مقداری برای top_n ارائه شود، فقط رکوردهای برتر top_n نمایش داده می‌شوند.
  • آستانه:  عددی. اگر مقدار آستانه ارائه شود، فقط رکوردهای دارای آستانه y > نمایش داده می شوند.
  • سایر: منطقی است. آیا تمام آستانه های x با y < باید در گروهی به نام "دیگر" خلاصه شوند و در پایین نمودار نمایش داده شوند؟
  • محدودیت:  منسوخ شده است. به جای آن از top_n استفاده کنید.
آنچه ChatGPT در مورد Kubernetes در حال تولید نمی گوید

این سه نقطه در آرگومان‌ها به این معنی است که می‌توانید به هر آرگومان ggplot aes() اضافه کنید، نه فقط آنهایی که توسط ggcharts تعریف شده‌اند.

نقاط داده را با نمودارهای gg مشخص کنید

آگومان ggcharts highlight به شما امکان می دهد یک یا چند مقدار x را برای برجسته کردن بصری در نمودار خود انتخاب کنید.

برای برجسته کردن بالاترین دما در هر نمودار میله‌ای دمای روزانه—یعنی «هرچه مقدار x برای بالاترین مقدار y من باشد» به جای مقدار x رمزگذاری شده، باید آن مقدار x را محاسبه کنید، آن را در یک متغیر ذخیره کنید (در این مورد maxday)، و سپس از نام متغیر با آرگومان برجسته استفاده کنید. توابع slice_max() و pull() dplyr برای یافتن اینکه کدام روز بیشترین مقدار را دارد بسیار مفید هستند:

library(dplyr)
maxday <- bos_high_temps %>%
slice_max(HighTemp) %>%
pull(Day)
column_chart(bos_high_temps, x = Day, y = HighTemp, sort = FALSE,
highlight = maxday
)

گراف با 5 میله، بلندترین به رنگ آبی و بقیه به رنگ خاکستری

گراف با بالاترین مقدار برجسته شده، ایجاد شده با بسته ggcharts R.

اگر می خواهید رنگ هایلایت را تغییر دهید، می توانید از تابع highlight_spec() برای تعیین مقادیر برجسته، رنگ هایلایت و رنگ غیر برجسته استفاده کنید، مانند:

spec <- highlight_spec(
what = maxday,
highlight_color = "darkred",
other_color = "lightgray"
)
column_chart(bos_high_temps, x = Day, y = HighTemp, sort = FALSE,
highlight = spec
)

نمودار با 1 نوار قرمز و 4 نوار خاکستری

سفارشی کردن رنگ هایلایت در نمودارهای gg.

اگر ggplot را می شناسید، می توانید سفارشی سازی بیشتری را به نمودار ggcharts خود اضافه کنید. مثال زیر یک عنوان و زیرنویس اضافه می کند، عنوان طرح و اندازه قلم زیرنویس را تعیین می کند و آنها را در مرکز قرار می دهد. من همچنین از تابع geom_text() ggplot برای افزودن برچسب به نوارها استفاده کردم.

column_chart(bos_high_temps, x = Day, y = HighTemp, sort = FALSE) + 
  ggtitle("Boston Daily High Temperatures This Week",
  subtitle = "National Weather Service data") +
  theme(
   plot.title = element_text(hjust = 0.5, size = 24),
   plot.subtitle = element_text(hjust = 0.5, size = 20)
  ) +
  geom_text(aes(label = paste0(HighTemp, '\u00B0')), vjust=1.5, colour="white",
  position=position_dodge(.9), size=6)

نمودار نواری با برچسب‌های عنوان، زیرنویس و ارزش روی میله‌ها

این نمودار سفارشی سازی ggplot را به نمودار ggcharts اضافه می کند.

مایکروسافت .NET Community Toolkit را راه اندازی کرد

برای ایجاد وجه توسط یک متغیر، به عنوان مثال ایجاد یک نمودار میله ای برای هر سال در یک مجموعه داده، از آرگومان facet استفاده کنید. نمودارهای آب نبات چوبی زیر از داده‌های مجموعه داده‌های درآمد زیست‌پزشکی داخلی ggcharts استفاده می‌کنند که شامل سه ستون است: شرکت، سال و درآمد. در کد زیر، من آن مجموعه داده را برای چهار سال اخیر فیلتر می کنم (در سال ۲۰۱۸ متوقف می شود) و سپس از ggcharts برای نمایان شدن و برجسته کردن استفاده می کنم.

biomedicalrevenue %>%
filter(year >= max(year) - 3) %>%
lollipop_chart(x = company, y = revenue, top_n = 10,
facet = year, highlight = c("Merck & Co.", "Pfizer"))

4 نمودار آب نبات چوبی هر سال، با داده های Merck و Pfizer به رنگ آبی و بقیه به رنگ خاکستری

نماسازی ggcharts با استفاده از آرگومان جنبه ساده است.

برای ساده‌تر کردن کد بالقوه، می‌توانید ggنمودار را با بسته ggeasy ترکیب کنید. ggeasy یک راه کاربر پسند برای تغییر چیزهایی مانند متن محور ارائه می دهد. بسته را بارگیری کنید و شروع به تایپ easy_ به علاوه چیزی که به دنبال آن هستید، مانند y_axis کنید، و یک منوی کشویی از گزینه‌های عملکرد در RStudio خواهید دید.

لیست کشویی گزینه های عملکرد هنگام تایپ easy_y_axis

برای مشاهده گزینه‌های بسته ggeasy شروع به تایپ easy_ کنید.

در زیر نحوه تغییر اندازه متن محور y یک طرح پایه آب نبات چوبی با افزودن کد ggplot2 آورده شده است.

biomedicalrevenue %>%
filter(year == max(year)) %>%
lollipop_chart(x = company, y = revenue, top_n = 10) +
theme(axis.text.y = element_text(size=16))

و در اینجا نحوه انجام آن با ggeasy آمده است:

biomedicalrevenue %>%
filter(year == max(year)) %>%
lollipop_chart(x = company, y = revenue, top_n = 10) +
easy_y_axis_labels_size(16)

در نهایت، اگر به گرافیک‌های ساده‌تر ggplot2 علاقه‌مند هستید، یک بسته دیگر که باید از آن آگاه باشید esquisse است. این بسته R کشیدن و رها کردن ggplot را ارائه می دهد و کد R را تولید می کند که می توانید در اسکریپت های خود استفاده کنید. من این را در ویدیوی قبلی که می‌توانید در زیر تماشا کنید، توضیح دادم.

برای نکات R بیشتر، به صفحه «بیشتر با R انجام دهید» در InfoWorld  بروید یا .