באופן פשטני, אם גרף עוזר לי להבין את הנתונים מהר ובלי לעוות את המציאות, הוא גרף טוב. אם, לעומת זאת, הגרף גורם לי לטעות לגבי האופי האמיתי של הנתונים או מאלץ אותי לבלות זמן רב בניתוח, הוא גרף גרוע.
מן העקרון הפשוט הזה נגזרות הרבה מאוד המלצות לגבי ה־״עשה״ ו־״אל תעשה״. ככה, למשל, גרף עוגה תלת מימדי היה בעניי החטא הגדול ביותר שאפשר לעשות בהדמיית נתונים. למה? כי העוגה מקשה על הצופה בהשוואת גדלים קרובים, ואם מוסיפים לה עיוותים של תלת מימד, אז בכלל….
שמחתי לראות שבמשאל שפרסמתי מוקדם יותר היום, לא מעט אנשים בחרו בעוגות התלת מימדיות כחטא הגדול ביותר. אבל, ייתכן שכולנו קצת טועים. כי הקריטריונים שרשמתי בתחילת הפוסט ניתנים למדידה. וכשיש נתונים אמפיריים, השיקולים התיאורטיים מקבלים משקל נמוך יותר. אתמול נתקלתי במאמר די מעניין. במאמר, החוקרים חשפו את הנסיינים לשלושה סוגי גרפים ובדקו את הזמן הדרוש לניתוח הגרף ואת גודל הטעויות במהלך הניתוח. שלושת סוגי הגרפים היו: תרשים עוגה ״רגיל״, תרשים עמודות ותרשים עוגה תלת מימדי.
לפי התיאוריה שלי, הסוג האחרון של הגרפים היה צריך להוביל לזמן קריאה הארוך ביותר ולטעויות הגדולות ביותר. ולא כן! ביצועי הנסיינים בכל הגרפים היו זהים.
מה ניתן ללמוד מזה? שיקולים עקרוניים זה טוב, אבל כדאי לבדוק אותם מדי פעם בעזרת ניסויים.
האם מעכשיו אתחיל ליצור עוגות תלת מימדיות? ממש ממש לא! אני כבר זקן מדי כדי לשנות את דרכי. האם אני אנזוף בסטודנטים שלי שייצרו עוגות תלת מימדיות בתרגילים? עדיין כן, אני כבר זקן מדי כדי לשנות גם את זה. האם אני אראה לסטודנטים את המחקר הזה ואחפש מחקרים דומים אחרים? כן וכן.
דעה מאוד פופולרית בין ״מומחים״ להדמיית נותנים שתרשים עוגה הוא תרשים נחות ולא רציני ושאם באמת חשוב לבנות תרשים מובן ומדוייק, יש להשתמש באלטרנטיבות, למשל – תרשים עמודות. אבל זה לא תמיד נכון. נזכרתי בזה היום, כאשר ראיתי את הפוסט של שחר איתן ארדי בו הוא מראה את התוצאות של סקר חדש לפיו ניתן להרכיב קואליציה ציונית-חילונית עם רוב של 63 ח״כים. את התוצאות הציג שחר בעזרת גרף עמודות.
אז דבר ראשון, אותו הגרף היה הרבה יותר טוב בלי הצבעים (כתבתי על זה בעברית [לינק] ובאנגלית [כאן] ).
אבל הבעיה הגדולה ביותר שלי עם הגרף הזה היא שהוא לא מראה את הדבר החשוב ביותר – את העובדה שיש קבוצת מפלגות שביחד חוצות את הרף החשוב ביותר של 60 ח״כים.
ואת זה בדיוק אפשר להשיג בעזרת תרשים עוגה, אם בונים אותו נכון. בעבר עשיתי סדנא בה הדגמתי את הייתרונות של תרשימי עוגות והשתמשתי, תאמינו או לא, בכנסת ישראל לצורך ההדגמה. הנה הגרף ההוא
הנתונים כאן נכונים לכנסת ה־20, אבל העיקרון נכון לכל כנסת אחרת: הפלחים מייצגים מפלגות ומחולקים לשתי קבוצות: הקואליציה והאופוזיציה. בתוך כל קבוצה הפלחים ממויינים לפי גודל, כדי לעזור בהשוואה בין פלחים דומים בגודלם וצבועים באותו צבע בסיסי כדי שיהיה ברור לאיזו קבוצה משתייכת המפלגה. רף הקסם – אותו הרף הנחשק של 60 ח״כים מסומן בקו מקוקו להמחשה והדגשה. נכון שזה יותר טוב עכשיו?
מי שרוצה לקבל את קוד הפייתון ליצירת הגרף הזה מוזמן לכאן.
ואם כבר מדברים על סדנאות, אז מחר ב־21 באוקטובר, בשעה 20:00 אני מקיים וובינר המוקדש להדמיית נתונים. הפרטים כאן.
במהלך חיי המקצועיים שמעתי רבות בגנות תרשימי עוגה. הסיבה לכך נעוצה בעובדה שקל מאוד לייצר זוועות עם תרשימים אלו. לא עזרה העובדה שבמשך המון זמן ברירת המחדל של תרשימי עוגה, בכל כלי ההדמיה העיקריים, ייצרה תרשימים מעוותים לגמרי. מצדדי החרם על תרשים עוגה מציעים את גרף העמודות כחלופה ראשונה. יחד עם זאת צריך לזכור שלא מתקנים עוול אחד בעוול אחר. לפעמים גרף עוגה דווקא מתאים יותר מגרף העמודות. בואו נראה דוגמה למקרה כזה.
הכנסת המתפקדת האחרונה שהייתה לנו במדינת ישראל הייתה הכנסת ה־20. בואו נראה איך התפלגו מושבי הכנסת בין המפלגות השונות.
זה הקוד ליצירת תרשים עוגה בסיסי בשפת פייתון עם שימוב בספריות סטנדרטיות
עזבו לרגע את העברית ההפוכה (נטפל בזה בהמשך), הגרף הזה פשוט נורא. הבעיה הגדולה ביותר שלו זה עווית המציאות. כאשר אנחנו מסתכלים על תרשים עוגה, אנחנו אומדים (estimate) שטחים וזוויות. במקרה הזה, יחס גובה/רוחב של העיגול לא נשמר ואתו גם נהרסו השטחים והזוויות. מה עושים? ספריית matplotlib מאפשרת קיבוע של יחס גובה/רוחב על ידי ax.set_aspect(1.0) . לשמחתי, גרסאות חדשות של ספריה זו הכניסו את היחס הנכון כברירת מחדל והעוגה הדפולטיבית נראית עגולה היום. ברוך ה׳
לפני שנפתור את הבעיות הגדולות יותר, בואו נטפל בעברית. כל מה שצריך לעשות זה להתקין ספריה מתאימה.
עדיין לא טוב. מרוב עצים לא רואים את היער. האם הצופה יכול לראות כמה מושבים יש לש״ס, למשל? או לליכוד?
ניסיון להזיז את המקרא ולהוסיף מספרים עדיין לא עובד טוב
בנקודה הזאת, האדם הסביר שלמד הדמית נתונים מרים ידיים, נזכר בתרשימי עמודות ומייצר משהו נחמד
זה יותר טוב, אבל לא מצויין. למה לא? כי אם כל מה שאנחנו רוצים להגיד זה כמה מושבים יש לכל מפלגה, לא צריך גרף, טבלה יכולה להספיק. אבל אם אנחנו רוצים להציג את מאזן הכוחות בכנסת הזאת, הגרף הזה לא מספק את הסחורה בכלל. למעשה, אין לנו כאן עשר מפלגות, אלא שתי קבוצות של מפלגות – הקואליציה והאופוזיציה (זוכרים כמה משעמם היה פעם). ואם מה שמעניין אותנו זה מאזן בין שתי קבוצות, אז גרף עוגה יכול להיות בחירה טובה.
לפני שנמשיך, להלן כללי אצבע לתרשים עוגה טוב אותם ליקטתי בספרות
מעט מאוד קבוצות (הייתי אומר, עד 4)
הפלחים ממוינים. המיון מקל על ההשוואה
עיגול צריך להראות עיגול (יחס גובה/רוחב שווה ל־1(
זהו
״רגע!״ אתם וודאי צועקים, לא אמרת מעט קבוצות? ״כן,״ אני עונה – כאן יש שתי קבוצות: קואליציה ואופוזיציה. בואו נצבע את הפלחים בהתאם
אנחנו מתקרבים. בנקודה זאת אני קצת מרמה. אני רוצה לקבץ את כל מפלגות הקואליציה ביחד, ואת האופוזיציה ביחד. טכנית, כדי לבצע את הקיבוץ הזה, אני הכפלתי את מספר המושבים של הקואליציה במינוס אחד, והתוצאה לפנינו:
נו, תגידו אתם, מה יותר טוב?
אני טוען שבמקרה הזה העוגה עדיפה על המקלות.
מי שמעוניין לראות את קוד הפייתון אתו יצרתי את הגרפים האלה, מומן להגיע לרפוזיטורי שלי בגיטהאב, בו יש עוד הרבה דוגמאות מעניינות..