دستور زبان گرافیک

ایده اصلی ggplot2 این است که هر نمودار از سه جزء ساخته می‌شود:

  1. داده: دیتافریمی که رسم می‌شود.
  2. نگاشت زیبایی‌شناختی (aes): اینکه کدام ستون روی محور افقی، کدام روی محور عمودی و کدام برای رنگ یا اندازه استفاده شود.
  3. لایه هندسی (geom): شکل نمایش داده؛ نقطه، ستون، خط، جعبه‌ای و غیره.

این اجزا با علامت + به هم اضافه می‌شوند. وقتی این منطق را یاد بگیرید، ساخت هر نوع نموداری فقط تغییر یک لایه است.

اولین نمودار

library(ggplot2) ggplot(data = df, aes(x = experience, y = performance)) + geom_point()

همین سه خط یک نمودار پراکنش می‌سازد. برای افزودن خط رگرسیون کافی است یک لایه دیگر اضافه کنید:

ggplot(df, aes(x = experience, y = performance)) + geom_point(alpha = 0.6) + geom_smooth(method = "lm", se = TRUE)

انواع پرکاربرد نمودار

نوع نمودار دستور کاربرد
پراکنش geom_point() رابطه دو متغیر کمی
ستونی geom_col() مقایسه مقادیر بین گروه‌ها
میله‌ای فراوانی geom_bar() فراوانی متغیر رسته‌ای
هیستوگرام geom_histogram() بررسی توزیع یک متغیر
جعبه‌ای geom_boxplot() مقایسه توزیع و شناسایی داده پرت
خطی geom_line() روند در طول زمان
چگالی geom_density() شکل توزیع به‌صورت پیوسته

نمایش گروه‌ها

برای تفکیک گروه‌ها با رنگ:

ggplot(df, aes(x = department, y = satisfaction, fill = gender)) + geom_boxplot()

و برای ساخت نمودارهای جداگانه به تفکیک یک متغیر (معادل Split در SPSS):

ggplot(df, aes(x = experience, y = performance)) + geom_point() + facet_wrap(~ department)

تفاوت color و fill: پارامتر color رنگ خط یا نقطه را تعیین می‌کند و fill رنگ داخل شکل را. برای نمودارهای جعبه‌ای و ستونی معمولاً fill لازم است.

آماده‌سازی برای چاپ

نمودار پیش‌فرض برای مقاله مناسب نیست؛ باید برچسب‌ها، تم و اندازه قلم تنظیم شود:

p <- ggplot(df, aes(x = department, y = satisfaction, fill = gender)) + geom_boxplot(outlier.shape = 1) + labs( title = "Job Satisfaction by Department", x = "Department", y = "Satisfaction Score", fill = "Gender" ) + theme_minimal(base_size = 13) + theme( legend.position = "bottom", panel.grid.minor = element_blank() ) p

برای ذخیره با کیفیت مناسب چاپ، رزولوشن دست‌کم ۳۰۰ نقطه بر اینچ لازم است:

ggsave("figure1.png", plot = p, width = 8, height = 5, dpi = 300) # برای مجلاتی که فایل برداری می‌خواهند ggsave("figure1.pdf", plot = p, width = 8, height = 5)

بسیاری از مجلات، نمودار سیاه‌وسفید یا سازگار با کوررنگی می‌خواهند. برای این منظور از پالت‌های ایمن مانند viridis استفاده کنید و علاوه بر رنگ، از تفاوت در شکل یا نوع خط هم برای تفکیک گروه‌ها کمک بگیرید.

جمع‌بندی

  • هر نمودار در ggplot2 از داده، نگاشت aes و لایه geom ساخته می‌شود.
  • لایه‌ها با علامت + به هم اضافه می‌شوند.
  • facet_wrap نمودارهای مجزا به تفکیک یک متغیر می‌سازد.
  • با labs و theme نمودار را برای چاپ آماده کنید.
  • خروجی را با dpi حداقل ۳۰۰ ذخیره کنید.