לפעמים תרשים עוגה מתאים יותר

בלוג

לפעמים תרשים עוגה מתאים יותר מתרשים עמודות

דעה מאוד פופולרית בין ״מומחים״ להדמיית נותנים שתרשים עוגה הוא תרשים נחות ולא רציני ושאם באמת חשוב לבנות תרשים מובן ומדוייק, יש להשתמש באלטרנטיבות, למשל – תרשים עמודות. אבל זה לא תמיד נכון. נזכרתי בזה היום, כאשר ראיתי את הפוסט של שחר איתן ארדי בו הוא מראה את התוצאות של סקר חדש לפיו ניתן להרכיב קואליציה ציונית-חילונית עם רוב של 63 ח״כים. את התוצאות הציג שחר בעזרת גרף עמודות.

אז דבר ראשון, אותו הגרף היה הרבה יותר טוב בלי הצבעים (כתבתי על זה בעברית [לינק] ובאנגלית [כאן] ).

אבל הבעיה הגדולה ביותר שלי עם הגרף הזה היא שהוא לא מראה את הדבר החשוב ביותר – את העובדה שיש קבוצת מפלגות שביחד חוצות את הרף החשוב ביותר של 60 ח״כים.

ואת זה בדיוק אפשר להשיג בעזרת תרשים עוגה, אם בונים אותו נכון. בעבר עשיתי סדנא בה הדגמתי את הייתרונות של תרשימי עוגות והשתמשתי, תאמינו או לא, בכנסת ישראל לצורך ההדגמה. הנה הגרף ההוא

הנתונים כאן נכונים לכנסת ה־20, אבל העיקרון נכון לכל כנסת אחרת: הפלחים מייצגים מפלגות ומחולקים לשתי קבוצות: הקואליציה והאופוזיציה. בתוך כל קבוצה הפלחים ממויינים לפי גודל, כדי לעזור בהשוואה בין פלחים דומים בגודלם וצבועים באותו צבע בסיסי כדי שיהיה ברור לאיזו קבוצה משתייכת המפלגה. רף הקסם – אותו הרף הנחשק של 60 ח״כים מסומן בקו מקוקו להמחשה והדגשה. נכון שזה יותר טוב עכשיו?

מי שרוצה לקבל את קוד הפייתון ליצירת הגרף הזה מוזמן לכאן.

ואם כבר מדברים על סדנאות, אז מחר ב־21 באוקטובר, בשעה 20:00 אני מקיים וובינר המוקדש להדמיית נתונים. הפרטים כאן.

תרשים עוגה כחלופה הולמת לגרף עמודות

בלוג, הדמיית נתונים

תרשים עוגה כחלופה הולמת לגרף עמודות

במהלך חיי המקצועיים שמעתי רבות בגנות תרשימי עוגה. הסיבה לכך נעוצה בעובדה שקל מאוד לייצר זוועות עם תרשימים אלו. לא עזרה העובדה שבמשך המון זמן ברירת המחדל של תרשימי עוגה, בכל כלי ההדמיה העיקריים, ייצרה תרשימים מעוותים לגמרי. מצדדי החרם על תרשים עוגה מציעים את גרף העמודות כחלופה ראשונה. יחד עם זאת צריך לזכור שלא מתקנים עוול אחד בעוול אחר. לפעמים גרף עוגה דווקא מתאים יותר מגרף העמודות. בואו נראה דוגמה למקרה כזה.

הכנסת המתפקדת האחרונה שהייתה לנו במדינת ישראל הייתה הכנסת ה־20. בואו נראה איך התפלגו מושבי הכנסת בין המפלגות השונות.

זה הקוד ליצירת תרשים עוגה בסיסי בשפת פייתון עם שימוב בספריות סטנדרטיות

fig, ax = plt.subplots()
ax.pie(
    x=tbl_knesset20['מושבים'],
    labels=tbl_knesset20['מפלגה']
)

עד לא מזמן, התוצאה הייתה נראית ככה:


עזבו לרגע את העברית ההפוכה (נטפל בזה בהמשך), הגרף הזה פשוט נורא. הבעיה הגדולה ביותר שלו זה עווית המציאות. כאשר אנחנו מסתכלים על תרשים עוגה, אנחנו אומדים (estimate) שטחים וזוויות. במקרה הזה, יחס גובה/רוחב של העיגול לא נשמר ואתו גם נהרסו השטחים והזוויות. מה עושים?  ספריית matplotlib  מאפשרת קיבוע של יחס גובה/רוחב על ידי ax.set_aspect(1.0) . לשמחתי, גרסאות חדשות של ספריה זו הכניסו את היחס הנכון כברירת מחדל והעוגה הדפולטיבית נראית עגולה היום. ברוך ה׳


לפני שנפתור את הבעיות הגדולות יותר, בואו נטפל בעברית. כל מה שצריך לעשות זה להתקין ספריה מתאימה.

fig, ax = plt.subplots()
ax.set_aspect(1.0)
patches, texts = ax.pie(
    x=tbl_knesset20['מושבים'],
)
ax.legend(patches, tbl_knesset20['label'])
ax.set_title(bidialg.get_display('לא לנסות בבית'))

עדיין לא טוב. מרוב עצים לא רואים את היער. האם הצופה יכול לראות כמה מושבים יש לש״ס, למשל? או לליכוד?

ניסיון להזיז את המקרא ולהוסיף מספרים עדיין לא עובד טוב

בנקודה הזאת, האדם הסביר שלמד הדמית נתונים מרים ידיים, נזכר בתרשימי עמודות ומייצר משהו נחמד

זה יותר טוב, אבל לא מצויין. למה לא? כי אם כל מה שאנחנו רוצים להגיד זה כמה מושבים יש לכל מפלגה, לא צריך גרף, טבלה יכולה להספיק. אבל אם אנחנו רוצים להציג את מאזן הכוחות בכנסת הזאת, הגרף הזה לא מספק את הסחורה בכלל. למעשה, אין לנו כאן עשר מפלגות, אלא שתי קבוצות של מפלגות – הקואליציה והאופוזיציה (זוכרים כמה משעמם היה פעם). ואם מה שמעניין אותנו זה מאזן בין שתי קבוצות, אז גרף עוגה יכול להיות בחירה טובה.

לפני שנמשיך, להלן כללי אצבע לתרשים עוגה טוב אותם ליקטתי בספרות

  • מעט מאוד קבוצות (הייתי אומר, עד 4)
  • הפלחים ממוינים. המיון מקל על ההשוואה
  • עיגול צריך להראות עיגול (יחס גובה/רוחב שווה ל־1(
  • זהו

״רגע!״ אתם וודאי צועקים, לא אמרת מעט קבוצות?  ״כן,״ אני עונה – כאן יש שתי קבוצות: קואליציה ואופוזיציה. בואו נצבע את הפלחים בהתאם

אנחנו מתקרבים. בנקודה זאת אני קצת מרמה. אני רוצה לקבץ את כל מפלגות הקואליציה ביחד, ואת האופוזיציה ביחד. טכנית, כדי לבצע את הקיבוץ הזה, אני הכפלתי את מספר המושבים של הקואליציה במינוס אחד, והתוצאה לפנינו:

נו, תגידו אתם, מה יותר טוב?

אני טוען שבמקרה הזה העוגה עדיפה על המקלות.

מי שמעוניין לראות את קוד הפייתון אתו יצרתי את הגרפים האלה, מומן להגיע לרפוזיטורי שלי בגיטהאב, בו יש עוד הרבה דוגמאות מעניינות..

להלן חוברת העבודה הרלוונטית

https://github.com/bgbg/datascience_dataviz_workshop/blob/master/demos/item_distribution/pie%20charts%20as%20an%20alternative%20to%20bar%20charts%20-%20the%20Israeli%20Knesset.ipynb