לפעמים, לא באמת צריך מקרא

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

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

plt.plot(gdp.Year, gdp.Israel, '-', label='Israel')
plt.plot(gdp.Year, gdp.France, '-', label='France')
plt.plot(gdp.Year, gdp.Italy, '-', label='Italy')
plt.legend()

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

גם באקסל קורה קסם קטן

אז איפה פה העיה?

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

עכשיו המוח צריך לעבוד עוד יותר קשה כי לא באמת אפשר לזכור את כל הצבעים.

איך משפרים את המצב?

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

plt.plot(gdp.Year, gdp.Australia, '-', label='Australia')
plt.plot(gdp.Year, gdp.Belgium, '-', label='Belgium')
plt.plot(gdp.Year, gdp.France, '-', label='France')
plt.plot(gdp.Year, gdp.Italy, '-', label='Italy')
plt.plot(gdp.Year, gdp.Israel, '-', label='Israel')
plt.legend()

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

אם יש זמן

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

countries = [c for c in gdp.columns if c != 'Year']
fig, ax = plt.subplots()
for i, c in enumerate(countries):
    ax.plot(gdp.Year, gdp[c], '-', color=f'C{i}')
    x = gdp.Year.max()
    y = gdp[c].iloc[-1]
    ax.text(x, y, c, color=f'C{i}', va='center')
seaborn.despine(ax=ax)

.אם אתם לא מבינים את הפייתון שלי, ליבי אתכם אבל לא אסביר את הקוד כאן

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

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

הנה, אותו הגרף, בלי המקרא (הקלאסית) ועם יותר מידע מועיל.

אני יודע מה תגידו: מה יקרה אם הקווים לא מופרדים בקלות? אם נצייר את אותו הגרף עבור שנים 2000 עד 2016 נקבל בלגאן גדול

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

תראו גם את הפוסט הישן שלי (באנגלית) שמדבר על מקרא.

לסיכום

בלי מקרא עדיף על עם מקרא. העובדה שאתם יכולים להוסיף מקרא לא אומרת שאתם צריכים.

אותו הפוסט באנגלית: [לינק]