plot() היא פונקציית הגרפים הכוללת של R
כדי לצייר גרף ב-R, קראו ל-plot(x, y) עם שני וקטורים מספריים באותו אורך. R מצייר נקודה אחת לכל זוג, הווקטור הראשון לאורך הציר האופקי והשני לאורך הציר האנכי, ומסמן את הצירים בשמות המשתנים אוטומטית:
x <- 1:12
y <- c(2, 5, 4, 8, 9, 12, 11, 15, 14, 18, 17, 21)
plot(x, y)
התוצאה היא פיזור של שנים עשר עיגולים חלולים שמטפסים בהתמדה ככל ש-x גדל. זה כל דמי הכניסה: בלי חבילות להתקין, בלי הגדרות. plot() מגיעה עם R הבסיסי והיא הפונקציה שמאחורי רוב הגרפים המהירים והגישושיים.
מכיוון שמריץ הקוד בעמוד הזה מציג פלט טקסט בלבד, קריאות הגרפים במאמר הזה הן קטעים סטטיים: הדביקו אותם ב-RStudio או בכל סשן R מקומי כדי לראות את התמונות. מה שכן אפשר להריץ כאן הוא הכנת הנתונים. זה הרגל טוב בכל מקרה: הסתכלו על המספרים לפני שאתם מציירים אותם.
אם מעבירים רק וקטור אחד, plot(y) משתמש במיקומי האינדקס 1, 2, 3, ... כציר האופקי, שימושי למבט מהיר על רצף של מדידות.
בחירת סוג הגרף
הארגומנט type קובע איך הזוגות מצוירים:
plot(x, y, type = "p") # points (the default)
plot(x, y, type = "l") # a connected line
plot(x, y, type = "b") # both: points joined by line segments
plot(x, y, type = "h") # vertical bars from zero, like a spike chart
plot(x, y, type = "s") # a step function
type = "l" הופך את הפיזור לגרף קווי, וזה מה שרוצים לכל דבר שנמדד לאורך זמן. type = "b" משאיר את התצפיות הבודדות גלויות ועדיין מראה את המגמה. type = "h" מצייר קטע אנכי דק מאפס ועד כל ערך, ו-type = "s" מצייר מדרגות שמחזיקות כל ערך עד הבא, שימושי לכמויות שמשתנות בקפיצות, כמו מחיר או ספירת מלאי.
כותרות, תוויות וצבעים
גרף בלי תוויות הוא פתק פרטי לעצמכם. שלושה ארגומנטים מתקנים את זה: main לכותרת, xlab ו-ylab לתוויות הצירים. col קובע את הצבע:
plot(x, y,
type = "b",
main = "Monthly signups",
xlab = "Month",
ylab = "Signups (thousands)",
col = "steelblue")
col מקבל שלושה סוגי ערכים:
- צבעים בעלי שם:
"red","steelblue","tomato","darkgreen". R מכיר 657 כאלה; הריצוcolors()כדי לראות את כל השמות. - קודי hex:
col = "#2C7FB8", בדיוק כמו ב-CSS. - וקטור של צבעים: אחד לכל נקודה, וכך צובעים נקודות לפי קבוצה:
col = c("tomato", "steelblue")[group]כש-groupהוא factor.
סמלי נקודות עם pch, גדלים עם cex ו-lwd
העיגול החלול של ברירת המחדל בסדר לגישוש אבל עכור בכל דבר שמראים לאחרים. pch (plotting character) בוחר את הסמל, ממוספר מ-0 עד 25:
plot(x, y, pch = 19) # solid circle - the usual choice
plot(x, y, pch = 17) # solid triangle
plot(x, y, pch = 21, col = "black",
bg = "gold") # fillable circle: border + fill
שני מספרים שווים שינון. pch = 19 הוא העיגול המלא שרוב הגרפים הגמורים משתמשים בו. pch = 21 עד 25 הם הסמלים הניתנים למילוי: col צובע את המסגרת ו-bg צובע את הפנים, כך שמקבלים נקודות בשני גוונים.
לגודל ולסגנון הקו יש כפתורים משלהם:
cexמשנה את גודל הנקודות:cex = 1.5מגדיל אותן פי אחד וחצי.lwdקובע את עובי הקו עבורtype = "l"או"b":lwd = 2הוא קו מלא וקריא.ltyקובע את דפוס הקו:lty = 1רציף,2מקווקו,3מנוקד.
שכבות: points(), lines() ו-abline()
plot() מתחילה גרף חדש. כדי לצייר מעל גרף קיים, השתמשו בפונקציות הנלוות שלה: הן מוסיפות לגרף הנוכחי במקום להחליף אותו:
plot(x, y, type = "l", lwd = 2, col = "steelblue",
main = "Actual vs. target")
points(x, y, pch = 19, col = "steelblue") # add the observations
lines(x, x * 1.5, lty = 2, col = "gray40") # add a second series, dashed
abline(h = 10, col = "tomato") # horizontal reference line at y = 10
abline() הוא הכלי לקווי ייחוס, ויש לו שלושה מצבים:
abline(h = 10): קו אופקי בערך נתון של הציר האנכי.abline(v = 6): קו אנכי בערך נתון של הציר האופקי.abline(a = 0, b = 1.5): קו לפי חותךaושיפועb.
הטריק הכי טוב שלו: העבירו לו מודל מותאם והוא מצייר בשבילכם את קו הרגרסיה, abline(lm(y ~ x)). השורה האחת הזו הופכת פיזור לטיעון; המדריך לגרף פיזור נבנה על זה.
כלל אחד לכבד: גבולות הצירים נקבעים בקריאת ה-plot() הראשונה. אם סדרה בשכבה נוספת חורגת מהם, היא נחתכת. הגדירו xlim = ו-ylim = ב-plot() המקורית בנדיבות מספקת לכל מה שאתם מתכננים להוסיף.
הוספת מקרא
ברגע שבגרף יש יותר מסדרה אחת, הוא צריך מקרא. legend() מקבלת מילת מפתח של מיקום כארגומנט הראשון, "topright", "topleft", "bottomright", "bottomleft", "top", "bottom" או "center" (אלה מחרוזות R מילוליות, ולכן הן נשארות באנגלית בקוד שלכם), ואחר כך את התוויות והסגנונות התואמים:
legend("topright",
legend = c("Actual", "Target"),
col = c("steelblue", "gray40"),
lty = c(1, 2),
pch = c(19, NA),
lwd = 2)
הווקטורים col, lty ו-pch חייבים להתיישר עם legend רשומה אחר רשומה: התווית הראשונה מקבלת את הצבע הראשון, וכן הלאה. השתמשו ב-NA לסגנון שלא חל על סדרה (כאן, לקו היעד אין נקודות). מילת המפתח מצמידה את התיבה לפינה של אזור הגרף; בחרו את הפינה שהנתונים שלכם משאירים ריקה.
כמה חלוניות ושמירה לקובץ
כדי להציג כמה גרפים באיור אחד, הגדירו את רשת הציור לפני שאתם מציירים: par(mfrow = c(1, 2)) מפצל את ההתקן לשורה אחת ושתי עמודות, ושתי קריאות ה-plot() הבאות ממלאות את החלוניות לפי הסדר. אפסו עם par(mfrow = c(1, 1)) כשתסיימו, אחרת הגרפים הבאים יישארו זעירים.
שמירה לקובץ עובדת על ידי הפניית הציור להתקן קובץ במקום למסך:
png("signups.png", width = 800, height = 600)
plot(x, y, type = "b", pch = 19, col = "steelblue",
main = "Monthly signups", xlab = "Month", ylab = "Signups")
dev.off()
כל מה שבין png() ל-dev.off() נוחת בקובץ; שום דבר לא מופיע על המסך. שכחת dev.off() היא הבאג הקלאסי: הקובץ נשאר נעול וריק עד שסוגרים את ההתקן. pdf(), jpeg() ו-svg() עובדות באותה דרך.
מה לקחת מכאן
plot(x, y)מצייר מיד;type =מחליף בין נקודות ("p"), קווים ("l") ושניהם ("b").main,xlab,ylabמסמנים את הגרף;colמקבל שמות צבעים (657 מהם ב-colors()) או קודי hex.pch = 19הוא העיגול המלא;pch = 21עד25מפרידים בין מסגרת (col) למילוי (bg);cex,lwd,ltyשולטים בגודל ובסגנון הקו.points(),lines()ו-abline()מוסיפים שכבות לגרף הקיים:abline(lm(y ~ x))מוסיף קו רגרסיה בקריאה אחת.legend("topright", ...)מסמן את הסדרות;png(...)+dev.off()שומר לקובץ.
בהמשך: ההיסטוגרמה, הגרף של משתנה אחד שתפנו אליו ראשון כשאתם פוגשים מאגר נתונים חדש.
שאלות נפוצות
איך יוצרים גרף ב-R?
קראו ל-plot(x, y) עם שני וקטורים מספריים באותו אורך. R פותח חלון גרפי ומצייר נקודה אחת לכל זוג. הוסיפו type = "l" לגרף קווי, main, xlab ו-ylab לכותרות, ו-col לצבע.
מה פירוש pch ב-R?
pch (plotting character) בוחר את סמל הנקודה, ממוספר מ-0 עד 25. pch = 19 הוא העיגול המלא שרוב האנשים רוצים. לסמלים 21 עד 25 יש מילוי נפרד: col קובע את המסגרת ו-bg את הפנים.
איך מוסיפים מקרא לגרף ב-R?
קראו ל-legend() אחרי הגרף, עם מילת מפתח של מיקום כמו "topright" כארגומנט הראשון, וקטור תוויות legend =, וערכי ה-col, pch או lty התואמים שהשתמשתם בהם בגרף.
איך שומרים גרף של R לקובץ?
פתחו התקן קובץ לפני הציור וסגרו אותו אחריו: png("myplot.png", width = 800, height = 600), אחר כך קוד הגרף, ואז dev.off(). שום דבר לא מופיע על המסך: הגרף נכנס ישר לקובץ.