הדמיית נתונים – מוסיפים תובנות על ידי הורדת פרטים

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

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

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

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

אז מה עושים?

קודם כל, מוסיפים כותרת (אני לא אתעייף להגיד עד כמה הכותרת היא כלי חשוב בעבודה של יוצר גרפים). הכותרת תהיה ״Post COVID purchase recovery״. אז עוד לפני שממשיכים, אפשר להבין שאין טעם להסתכל על שנת 2010, מהיכן שהנתונים שלנו מתחילים. עוד ברור שצריך לסמן את ״שנת הקורונה״ ואת ״שנת ההתאוששות״. אז הנה מה שיצא לי: פחות רעש חזותי, פחות נתונים וכבר יותר ברור.

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

הו! הרבה יותר טוב

לפני ואחרי בהדמיית נתונים. המשחק הגדול

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

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

לקחתי את הגרף וניסיתי לשפר.

נתחיל מהגרף המקורי שהתפרסם כאן [לינק].

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

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

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

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

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

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

לסיכום

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

לפני ואחרי – גרף עמודות מוערמות

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

נשאלתי שאלה על ידי קולגה איך לבחור נכון צבעים לגרף עמודות שנראה בערך כך:

מה שרואים כאן זה תרשים עמודות מוערמות stacked bar plot שמכיל המון (המון!) קטגוריות. ובגלל הקטגוריות הרבות, קשה מאוד לקרוא אצת הגרף.

 איך בוחרים צבעים בצורה נכונה?

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

זאת לא השאלה הנכונה

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

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

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

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

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

אפשרות ראשונה: להקטין את כמות הקטגוריות

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

נכון שזה הרבה יותר קריא? אם נשפר קצת את הקריוּת (readability) של הגרף, נקבל את הדבר היפה הזה:

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

אפשרות שניה: להפריד בין הגרפיםה

שמתם לב שציר ה־X בגרף המקורי מייצג את הזמן? זה אומר שאנחנו יכולים לשנות את גרף העמודות הזה לגרף אבולוציה evolution graph שזה שם קצת יותר מתחכם לגרף של נקודה קו. שוב, אני לא בטוח מה מחבר הגרף המקורי רצה להגיד, אבל אם היה למחבר חשוב מאוד להראות את הדינמיקה האינדיווידואלית של כל קטגוריה, אז אפשר להראות בדיוק את זה:

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

מסקנה

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

לפני ואחרי בהדמיית נתונים. תרשים רדאר (תרשים עכביש)

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

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

לפני: הבעיות של תרשים עכביש 

הנה השחזור שלי של תרשים רדאר שראיתי באחת הקבוצות בפייסבוק. 

מה הבעיות שלו? 

הבעיה הראשונה היא הקריאוּת (readability באנגלית): הגרף הזה לא קריא. האם אתם יכולים להזות בצורה מהירה את הערך של הסדרה האדומה עבור ״substance abuse״? לדעתי, לא.

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

אחרי: בחירת גרף מבוססת מסקנה

מה האלטרנטיבה?

קודם כל, צריך להחליט מה המסקנה של הגרף. לא רק לחשוב, אלא לכתובת את המסקנה ככותרת של הגרף. זה יאלץ אותך להחליט מה המסקנה וידריך אותך במאמצים לשיפור. (אני מאוד ממליץ לקרוא את הפוסט הזה https://gorelik.net/…/how-to-suck-less-in-data…/ או לראות את ההקלטה של ההרצאה שלי כאן: https://youtu.be/xGfaFdoQVHM

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

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

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


קוד פייתון שהשתמשתי בו כדי ליצור את הגרפים כאן נמצא כאן: https://gist.github.com/bgbg/db833db723998cd244b5049bfe01f5ac

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

בלוג

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

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

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

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

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

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

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

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