צור היסטוגרמות מונפשות באמצעות R

צור היסטוגרמות מונפשות באמצעות R

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

Skillbox ממליצה: קורס מעשי "מפתח Python מאפס".

אנו מזכירים: לכל קוראי Habr - הנחה של 10 רובל בעת הרשמה לכל קורס Skillbox באמצעות קוד ההטבה של Habr.

חבילות

אנחנו צריכים חבילות ב-R:

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

נתונים

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

איזה סוג מידע זה? המדגם מכיל את ערך התמ"ג של רוב המדינות למספר שנים (מ-2000 עד 2017).

עיבוד נתונים

אנו נשתמש בקוד שפורסם למטה כדי להכין את פורמט הנתונים הנדרש. אנו מנקים את שמות העמודות, הופכים את המספרים לפורמט מספרים וממירים את הנתונים באמצעות הפונקציה gather() . אנו שומרים את כל מה שמתקבל ב-gdp_tidy.csv לשימוש נוסף.

library(tidyverse)
library(janitor)

תמ"ג <- read_csv("./data/GDP_Data.csv")

#בחר עמודות נדרשות

תמ"ג <- תמ"ג %>% בחר (3:15)

#סנן רק שורות מדינה

תמ"ג <- תמ"ג[1:217,]

gdp_tidy <- gdp %>%
mutate_at(vars(מכיל("YR")),as.numeric) %>%
לאסוף (שנה, ערך, 3:13) %>%
janitor::clean_names() %>%
מוטציה (שנה = as.numeric (stringr::str_sub (שנה, 1,4, XNUMX)))

write_csv(gdp_tidy, "./data/gdp_tidy.csv")

היסטוגרמות מונפשות

יצירתם דורשת שני שלבים:

  • שרטוט סט שלם של היסטוגרמות בפועל באמצעות ggplot2.
  • הנפשת היסטוגרמות סטטיות עם פרמטרים רצויים באמצעות gganimate.

השלב האחרון הוא עיבוד האנימציה בפורמט הרצוי, כולל GIF או MP4.

טוען ספריות

  • ספרייה (מסודרים)
  • library(gganimate)

ניהול נתונים

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

gdp_tidy <- read_csv("./data/gdp_tidy.csv")

gdp_formatted <- gdp_tidy %>%
group_by(year) %>%
# ה-* 1 מאפשר דירוגים שאינם שלמים בזמן הזזה
מוטציה (דרגה = דרגה (ערך-),
Value_rel = ערך/ערך[דרגה==1],
Value_lbl = paste0(" ",round(value/1e9))) %>%
group_by(שם_מדינה) %>%
מסנן (דרגה <=10) %>%
לפרוק קבוצה()

בניית היסטוגרמות סטטיות

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

staticplot = ggplot(gdp_formatted, aes(rank, group = country_name,
fill = as.factor(country_name), color = as.factor(country_name))) +
geom_tile(aes(y = value/2,
height = value,
width = 0.9), alpha = 0.8, color = NA) +
geom_text(aes(y = 0, label = paste(country_name, " ")), vjust = 0.2, hjust = 1) +
geom_text(aes(y=value,label = Value_lbl, hjust=0)) +
coord_flip(clip = "off", expand = FALSE) +
scale_y_continuous(labels = scales::comma) +
scale_x_reverse() +
guides(color = FALSE, fill = FALSE) +
theme(axis.line=element_blank(),
axis.text.x=element_blank(),
axis.text.y=element_blank(),
axis.ticks=element_blank(),
axis.title.x=element_blank(),
axis.title.y=element_blank(),
legend.position="none",
panel.background=element_blank(),
panel.border=element_blank(),
panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.grid.major.x = element_line( size=.1, color="grey" ),
panel.grid.minor.x = element_line( size=.1, color="grey" ),
plot.title=element_text(size=25, hjust=0.5, face="bold", colour="grey", vjust=-1),
plot.subtitle=element_text(size=18, hjust=0.5, face="italic", color="grey"),
plot.caption =element_text(size=8, hjust=0.5, face="italic", color="grey"),
plot.background=element_blank(),
plot.margin = margin(2,2, 2, 4, "cm"))

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

אנימציה

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

anim = staticplot + transition_states(year, transition_length = 4, state_length = 1) +
view_follow(fixed_x = TRUE) +
labs(title = 'GDP per Year : {closest_state}',
subtitle = "Top 10 Countries",
caption = "GDP in Billions USD | Data Source: World Bank Data")

טִיוּחַ

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

GIF

# For GIF

אנימט (anim, 200, fps = 20, רוחב = 1200, גובה = 1000,
מפיק = gifski_renderer("gganim.gif"))

MP4

# For MP4

אנימט (anim, 200, fps = 20, רוחב = 1200, גובה = 1000,
רינדור = ffmpeg_renderer()) -> עבור_mp4

anim_save("animation.mp4", אנימציה = for_mp4)

תוצאה

צור היסטוגרמות מונפשות באמצעות R

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

Skillbox ממליצה:

מקור: www.habr.com

קנה אירוח אמין לאתרים עם הגנת DDoS, שרתי VPS VDS 🔥 קנה אחסון אתרים אמין עם הגנת DDoS, שרתי VPS VDS | ProHoster