Investigating geo-spatialtemporal meteorite data to visualize insights of impact distributions.
Author
Affiliation
Viz Wizards - Nick Ferrante, Jeremiah Gaiser, Tanya Evita George, Mrunal Jadhav, Jasdeep Singh Jhajj, Gillian McGinnis, Agastya Deshraju
School of Information, University of Arizona
Abstract
The goal of “Meteoric Fall: A Comet-ment to Data” was to explore the complex relationships between meteorite impacts, historical events, and celestial phenomena through data visualization techniques. While the project utilized the capabilities of the Shiny app, the primary focus was on investigating geo-spatiotemporal relationships using various forms of visualization. These included animated timelines for spatiotemporal analysis, static maps for mass distribution, leaflet maps for user interactivity, and custom maps for data exploration. By addressing questions about meteorite distribution, historical events, and celestial correlations, our analysis aimed to deepen understanding in fields such as geology, astronomy, and data analytics. Through these visualizations, we aimed to offer insights that would spark further exploration and scientific discourse.
Introduction
The suggested idea introduces an interactive platform powered by Shiny app in an effort to close the knowledge gap between meteorite landing data and perceptive analysis. Humanity has always been captivated by meteorite strikes, but little is known about their distribution and potential consequences. Users will have access to a dynamic environment through this effort, where visually appealing representations will allow them to navigate through meteorite landing data. This study aims to provide important insights by addressing important questions about the historical settings and geographical distribution of meteorite impacts. Moreover, the technology hopes to provide predictive skills for future meteorite impact sites by extrapolation from historical data. The expected results have the potential to inform decision-making processes in relevant disciplines and to enhance scientific discourse.
Question 1: What does the distribution of meteor impacts look like across the earth?
Static Plot to visualize meteorites that were recorded before falling
Geographical Distribution: The map utilizes latitude and longitude coordinates to display the locations of meteorite landings. Notably, there’s a higher concentration of landings in the northern hemisphere compared to the southern hemisphere, as indicated by the density of dots. Meteorite Size Representation: The colored dots on the map represent meteorites, with each color indicating a different size category. Light yellow dots denote light meteorites, orange dots signify meteorites of average mass, and red dots represent heavy meteorites. This color scheme allows for a visual understanding of the distribution of meteorite sizes. Meteorite Density: The density of the colored dots across various geographical regions reflects the frequency of meteorite landings in those areas. Regions with a greater density of dots have experienced more meteorite landings, suggesting higher meteorite activity.
In summary, this map provides an intriguing visualization of meteorite landings worldwide, offering insights into the distribution of meteorite sizes and their density across different geographical areas.
Static Plot to visualize meteorites recorded after falling.
The graph provides latitude on the vertical axis ranging from -50 to 50 and longitude on the horizontal axis ranging from -100 to 200.The sizes of the meteorites are categorized into three groups: light, average mass, and heavy, represented by yellow, orange, and red dots respectively.
Northern Hemisphere: There’s a significant clustering of meteorites across the northern hemisphere. Europe and parts of Asia show a dense collection of average mass to heavy meteorites. North America also displays clusters but with more light to average mass meteorites. Southern Hemisphere: There are fewer landings depicted in the southern hemisphere with some scattered light ones across Australia and South America.
In summary, this map provides an intriguing visualization of meteorite not fallen worldwide, offering insights into the distribution of meteorite sizes and their density across different geographical areas.
Leaflet
The distribution of meteor observations across the Earth is depicted through an interactive leaflet map. This visualization allows users to navigate and explore specific regions of the world where meteorites have been observed to be falling, but not found. Using the reclat and reclong variables, which correspond to the latitude and longitude respectively, the map accurately plots the locations of meteorite observations. Using the several interactivity features of the leaflet package, users can engage with the map to retrieve detailed information about each meteor by clicking on it, including the year it fell , its mass, its classification characteristics, and its latitude and longitude. This interactive approach provides users with a dynamic and engaging means of exploring the distribution of meteor impacts, enabling them to gain deeper insights into the spatial patterns of meteorite landings across the globe.
Shiny application
To allow accessible exploration of the meteorite landing data, a Shiny application was also developed to visualize the geospatial values. The application can be accessed here.
A sample is shown below; filters include the year range, mass of meteorite, and method of discovery. Furthermore, users can customize the map to better suit the data subset—point size, transparency, and even the map projection type may be selected.
Question 2: How do historical events relate to the observations and discoveries of meteors?
To explore the relationship between historical events and the observations and discoveries of meteors, we employ an animated line graph showcasing the frequency of meteor observations per year. This dynamic visualization allows us to discern any correlations between significant historical events and spikes or dips in meteor observations over time. By incorporating annotations representing major historical events, we can examine whether certain events coincide with increased or decreased activity in the study of meteors.
The animation illustrates the progression of meteor observations across different time periods, with historical events appearing on the timeline as they occur. This approach enables us to identify potential patterns or trends in meteor observation activity associated with specific historical events. For instance, we may observe a surge in meteor findings following significant milestones in space exploration, such as the space race era. By analysing the relationship between historical events and meteor observations, we aim to uncover insights into the societal and scientific factors influencing the study of meteors throughout history.
This analysis not only enhances our understanding of the interplay between historical events and meteor observations but also sheds light on the broader context in which meteor studies have evolved. By contextualizing meteor observations within historical narratives, we can glean valuable insights into the motivations and influences driving scientific inquiry in the field of meteoritics.
Question 3: Are trends observed in frequency, type, or location of meteors, related to known celestial events?
When a meteorite arrives on earth, its entrance is dependably marked by a dramatic display of flash and fireball as the space rock enters Earth’s atmosphere. But where do these meteorites come from? By analyzing variables such as mineral composition and trajectory, scientists are able to hypothesize which heavenly bodies meteors originate from. Is there a relationship between these dramatic meteor-fall events and Eath’s proximity to known parent bodies?
To answer this question, we developed a Shiny application designed to analyze a specific subset of our meteor dataset, focusing on observed meteorite falls from 1980-2010 that are thought to originate from one of four asteroids: Vesta, 6 Hebe, 8 Flora, and Itokawa.
In addition to meteorite fall observations, positional asteroid data is used to determine parent body distance from earth, and allow spatial relationships to be visualized in 3D.
To accomplish this, the dataset was filtered to include only meteorites that were observed falling, and not necessarily found. Of these meteorites, the four most frequent groups were selected, those being L, LL, and R chondrites, as well as the HED (howardite–eucrite–diogenite) class. Cursory research was then conducted on Wikipedia to identify which asteroid bodies the groups were thought to originate from. By definition, HED meteorites likely come from Vesta. L chondrites are likely from the Flora family (spatially represented by Flora 8), and H chondrites from 6 Hebe. The theoretical provenance of LL chondrites maintains the least confidence of all meteor types, though its shared mineral composition with Itokawa hints that meteorites of this group may hail from the same region as this asteroid.
Orbital locations for these four parent bodies acquired from NASA Jet Propulsion Laboratory Horizons System.* This data was then used in conjunction with the original meteor dataset and additional month-of-meteorite-fall data manually retrieved from the Meteoritical Bulletin Database**. All together, we were able to develp a shiny app comprising the following visualizations for a given time range: A bar plot indicating meteorite fall observations grouped by theoretical parent body, a line plot indicating the distance between earth and each asteroid of interest, and a 3D representation of the orbital trajectory of earth and asteroids around the sun, as well as asteroid/earth locations at specific times. The 3D plot was developed with basic functions of the RGL library.
A small date range for the 2D data plots is pictured above. While this is a small slice of data, it is representative in that one probably could not use visual analysis alone to claim a relationship between parent asteroid and resultant meteorite falls. If such a relationship does exist, it appears to require more sensitive statistical analysis than just eyeballing it. Nevertheless, the resulting shiny app provides a novel, edifying interface for assessing and contextualizing meteorite events and earth’s spatial relationship with meteorite producing bodies.
The application is pictured below, and may be accessed here.
Conculsion
“Meteoric Fall: A Comet-ment to Data” embarked on a journey to unravel the mysteries of meteorite impacts by employing various data visualization techniques. Our project sought to explore the intricate relationships between Earth and space through dynamic visualizations, delving into questions surrounding meteorite distribution, historical events, and celestial phenomena. By leveraging interactive tools like leaflet maps, animated timelines, and density maps, we unearthed captivating insights into the geographic distribution of meteor impacts and their correlation with historical occurrences and known celestial events. From identifying continents with the highest meteorite accumulation to elucidating the interplay between Earth’s proximity to astronomical phenomena, our analysis offers a nuanced understanding of meteorites. Through user-friendly visualizations, we aspire to ignite curiosity and foster deeper exploration in fields such as geology, astronomy, and data analytics, paving the way for future discoveries and scientific advancements.
---title: "Meteoric Fall: a comet-ment to data"subtitle: "INFO 526 - Project Final"author: - name: "**Viz Wizards** - Nick Ferrante, Jeremiah Gaiser, Tanya Evita George,<br> Mrunal Jadhav, Jasdeep Singh Jhajj, Gillian McGinnis, Agastya Deshraju" affiliations: - name: "School of Information, University of Arizona"description: "Investigating geo-spatialtemporal meteorite data to visualize insights of impact distributions."format: html: code-tools: true code-overflow: wrap embed-resources: trueeditor: visualexecute: warning: false echo: false---```{r load_pkgs}#| label: load_pkgs#| echo: false#| message: false#| warning: false#| code-summary: "Load Packages"if (!require("pacman")) install.packages("pacman")pacman::p_load(tidyverse, readr, leaflet, here, gganimate, magick, sysfonts, showtext, gridExtra, DT) ```## AbstractThe goal of "Meteoric Fall: A Comet-ment to Data" was to explore the complex relationships between meteorite impacts, historical events, and celestial phenomena through data visualization techniques. While the project utilized the capabilities of the Shiny app, the primary focus was on investigating geo-spatiotemporal relationships using various forms of visualization. These included animated timelines for spatiotemporal analysis, static maps for mass distribution, leaflet maps for user interactivity, and custom maps for data exploration. By addressing questions about meteorite distribution, historical events, and celestial correlations, our analysis aimed to deepen understanding in fields such as geology, astronomy, and data analytics. Through these visualizations, we aimed to offer insights that would spark further exploration and scientific discourse.## IntroductionThe suggested idea introduces an interactive platform powered by Shiny app in an effort to close the knowledge gap between meteorite landing data and perceptive analysis. Humanity has always been captivated by meteorite strikes, but little is known about their distribution and potential consequences. Users will have access to a dynamic environment through this effort, where visually appealing representations will allow them to navigate through meteorite landing data. This study aims to provide important insights by addressing important questions about the historical settings and geographical distribution of meteorite impacts. Moreover, the technology hopes to provide predictive skills for future meteorite impact sites by extrapolation from historical data. The expected results have the potential to inform decision-making processes in relevant disciplines and to enhance scientific discourse.```{r load_dataset}#| label: load_dataset#| message: false#| warning: false#| code-summary: "Loading and cleaning the Dataset"#| echo: false#| output: false# Read the CSV filemeteorite_data <- read_csv(here("data/Meteorite_Landings.csv"))meteorite_data <- meteorite_data |> na.omit(year)meteorite_data$year <- as.numeric(meteorite_data$year)meteorite_data_filtered <- meteorite_data |> filter(year > 860 & year < 2100)meteorite_data_filtered$reclong[meteorite_data_filtered$reclat == 0 & meteorite_data_filtered$reclong == 0] <- NAmeteorite_data_filtered$reclat[meteorite_data_filtered$reclat == 0 & meteorite_data_filtered$reclong == 0] <- NAmeteorite_data_filtered <- meteorite_data_filtered |> filter(!is.na(reclong) & !is.na(reclat))meteorite_data_filtered <- meteorite_data_filtered |> rename(mass = `mass (g)`)```## Question 1: What does the distribution of meteor impacts look like across the earth?### Static Plot to visualize meteorites that were recorded before falling```{r filter_meteorites, fig.align='center', fig.alt= "World map showing the different recorded locations where meteorites fell to Earth"}#| label: filter_meteorites#| message: false#| warning: false#| code-summary: "Filtering meteorites"# Adding a filter to classify the size of the meteoritesfiltered_data <- subset(meteorite_data_filtered, mass > 1000 & fall == "Fell")filtered_data$meteor_size <- cut(filtered_data$mass, breaks = c(0, 10000, 100000, Inf), labels = c("light", "average mass", "heavy"))# Plot the world mapworld_map <- ggplot() + geom_polygon(data = map_data("world"), aes(x = long, y = lat, group = group), fill = "lightblue", color = "black", size = 0.25) + geom_point(data = filtered_data, aes(x = reclong, y = reclat, color = meteor_size), size = 1.5) + labs(title = "Meteorite Landings (Fallen)") + scale_color_manual(values = c("light" = "yellow", "average mass" = "orange", "heavy" = "red")) + theme_minimal() + labs(x = "Longitutde", y = "Latitutde", color = "Meteor Size") + theme( legend.position = "bottom" )# Show the plotprint(world_map)```**Geographical Distribution:** The map utilizes latitude and longitude coordinates to display the locations of meteorite landings. Notably, there's a higher concentration of landings in the northern hemisphere compared to the southern hemisphere, as indicated by the density of dots.\**Meteorite Size Representation:** The colored dots on the map represent meteorites, with each color indicating a different size category. Light yellow dots denote light meteorites, orange dots signify meteorites of average mass, and red dots represent heavy meteorites. This color scheme allows for a visual understanding of the distribution of meteorite sizes.\**Meteorite Density:** The density of the colored dots across various geographical regions reflects the frequency of meteorite landings in those areas. Regions with a greater density of dots have experienced more meteorite landings, suggesting higher meteorite activity.\In summary, this map provides an intriguing visualization of meteorite landings worldwide, offering insights into the distribution of meteorite sizes and their density across different geographical areas.### Static Plot to visualize meteorites recorded after falling.```{r meteorite_found, fig.align='center', fig.alt= "World map showing the different recorded locations of meteorites before falling"}#| label: meteorite_found#| message: false#| warning: false#| code-summary: "Plotting Found meteorites"# Filter the data for meteorites that have not fallen and classify massfiltered_data_not_fallen <- subset(meteorite_data_filtered, mass > 1000 & fall == "Found")filtered_data_not_fallen$meteor_size <- cut(filtered_data_not_fallen$mass, breaks = c(0, 10000, 100000, Inf), labels = c("light", "average mass", "heavy"))# Plot the world map for meteorites that have not fallenworld_map_not_fallen <- ggplot() + geom_polygon(data = map_data("world"), aes(x = long, y = lat, group = group), fill = "lightblue", color = "black", size = 0.25) + geom_point(data = filtered_data_not_fallen, aes(x = reclong, y = reclat, color = meteor_size), size = 1.5) + labs(title = "Meteorite Landings (Not Fallen)") + scale_color_manual(values = c("light" = "yellow", "average mass" = "orange", "heavy" = "red")) + theme_minimal() + labs(x = "Longitutde", y = "Latitutde", color = "Meteor Size") + theme( legend.position = "bottom" )# Show the plotprint(world_map_not_fallen)```The graph provides latitude on the vertical axis ranging from -50 to 50 and longitude on the horizontal axis ranging from -100 to 200.The sizes of the meteorites are categorized into three groups: light, average mass, and heavy, represented by yellow, orange, and red dots respectively.**Northern Hemisphere**: There’s a significant clustering of meteorites across the northern hemisphere. Europe and parts of Asia show a dense collection of average mass to heavy meteorites. North America also displays clusters but with more light to average mass meteorites.\**Southern Hemisphere**: There are fewer landings depicted in the southern hemisphere with some scattered light ones across Australia and South America.\In summary, this map provides an intriguing visualization of meteorite not fallen worldwide, offering insights into the distribution of meteorite sizes and their density across different geographical areas.### Leaflet```{r leaflet_plot, fig.align='center', fig.alt= "Leaflet type World map showing the different cluster locations of meteorites distribution"}#| label: leaflet_plot#| message: false#| warning: false#| code-summary: "Leaflet Plot for Fallen Meteorites"# Filtered Meteorite data for Fallen, Not Foundmeteorite_data_filtered_fell <- meteorite_data_filtered |> filter(meteorite_data_filtered$fall == "Fell")map_plot <- leaflet(data = meteorite_data_filtered_fell) |> addTiles() |> addMarkers(lat = ~reclat, lng = ~reclong, clusterOptions = markerClusterOptions(disableClusteringAtZoom = 3), popup = ~paste("Name:", name, "<br>Class:", recclass, "<br>Mass:", mass, "g", "<br>Year:", year, "<br>Latitude:", reclat, "<br>Longitude:", reclong), icon = makeIcon("images/meteorite.png", iconWidth = 12, iconHeight = 12)) |> setView(lng = 0, lat = 0, zoom = 1)# View the Plotmap_plot```The distribution of meteor observations across the Earth is depicted through an interactive leaflet map. This visualization allows users to navigate and explore specific regions of the world where meteorites have been observed to be falling, but not found. Using the `reclat` and `reclong` variables, which correspond to the latitude and longitude respectively, the map accurately plots the locations of meteorite observations. Using the several interactivity features of the `leaflet` package, users can engage with the map to retrieve detailed information about each meteor by clicking on it, including the year it fell , its mass, its classification characteristics, and its latitude and longitude. This interactive approach provides users with a dynamic and engaging means of exploring the distribution of meteor impacts, enabling them to gain deeper insights into the spatial patterns of meteorite landings across the globe.### Shiny applicationTo allow accessible exploration of the meteorite landing data, a Shiny application was also developed to visualize the geospatial values. The application can be accessed [here](https://gmcginnis.shinyapps.io/MeteoriteMap/).A sample is shown below; filters include the year range, mass of meteorite, and method of discovery. Furthermore, users can customize the map to better suit the data subset---point size, transparency, and even the map projection type may be selected.[![A screenshot of the meteorite landings map application, including a sidebar of filtering options, outputted map plot, and outputted table of results.](images/shiny_landings_sample.png)](https://gmcginnis.shinyapps.io/MeteoriteMap/)## Question 2: How do historical events relate to the observations and discoveries of meteors?```{r time_series_plot}#| label: time_series_plot#| eval: false#| message: false#| warning: false#| code-summary: "Time Series Plot"# Load Google fontfont_add_google(name = "Lato", family = "Lato")showtext_auto()# Create line plotlinePlot <- meteorite_data |> group_by(year) |> summarise(count = n()) |> filter(year > 1950 & year < 2100) |> ggplot(aes(x = year, y = count)) + geom_line(linewidth = 1, color = "#607D8B") + annotate("segment", x = 1955, xend = 1955, y = 0, yend = 3500, linetype = "dotted") + annotate("segment", x = 1975, xend = 1975, y = 0, yend = 3500, linetype = "dotted") + annotate("segment", x = 1979, xend = 1979, y = 0, yend = 3500, linetype = "dotted") + annotate("segment", x = 1999, xend = 1999, y = 0, yend = 3500, linetype = "dotted") + annotate("segment", x = 2001, xend = 2001, y = 0, yend = 3500, linetype = "dotted") + annotate("segment", x = 2002, xend = 2002, y = 0, yend = 3500, linetype = "dotted") + annotate("text", x = 1955, y = 3750, label = "Start of the\nSpace race", family = "Lato", size = 4.5) + annotate("text", x = 1972, y = 3750, label = "End of the\nSpace race", family = "Lato", size = 4.5) + annotate("text", x = 1978, y = 3750, label = "Yamato Mountains\nExpedition", family = "Lato", hjust = 0, size = 4.5) + annotate("text", x = 2002, y = 3750, label = "Last Leonid Showers", family = "Lato", size = 4.5) + coord_cartesian(ylim = c(150,3820)) + labs(x = "Year", y = "Number of Observations") + theme_classic() + theme(plot.title.position = "plot", panel.grid.major.y = element_line(), axis.title = element_text(size = 17), axis.title.y = element_text(margin = margin(0, 10, 0, 0)), axis.title.x = element_text(margin = margin(10, 0, 0, 0)), axis.text = element_text(size = 12)) + transition_reveal(year)# Animate Line plotlinePlotGif <- animate(linePlot, fps = 4, nframes = 100, width = 600, height = 400)linePlotGifanim_save("linePlotGif.gif", linePlotGif)# Create world mapworldMap <- meteorite_data |> group_by(year) |> filter(year > 1950 & year < 2100, !is.na(reclat), !is.na(reclong), reclong < 350) |> ggplot(aes(x = reclong, y = reclat)) + geom_polygon(data = as_tibble(map_data("world")), aes(x = long, y = lat, group = group), inherit.aes=F, fill = "white") + coord_quickmap() + geom_point() + labs(title = "Time Series of Meteor Observations by Year", subtitle = "Current Year: {closest_state}") + theme_void() + theme(panel.background = element_rect(fill = "skyblue"), plot.title = element_text(hjust = 0.5), plot.subtitle = element_text(hjust = 0.5), text = element_text(size = 17)) + transition_states(year, transition_length = 1, state_length = 1) + shadow_wake(wake_length = 0.25) + enter_fade()# Animate world mapworldMapGif <- animate(worldMap, fps = 4, nframes = 100, width = 600, height = 1100)### Putting animations together# Modify white space margins around plotslinePlotGifImg <- image_read(here("images", "linePlotGif.gif"))worldMapGifImg <- image_read(here("images", "worldMapGif.gif"))lpMGif <- image_border(image_trim(linePlotGifImg), "white", "20x20")wmMGif <- image_border(image_trim(worldMapGifImg), "white", "20x20")# Arrange plots on top of each otherfinalPlot <- image_append(c(wmMGif[1], lpMGif[1]), stack = TRUE)for (i in 2:100){ combined <- image_append(c(wmMGif[i], lpMGif[i]), stack = TRUE) finalPlot <- c(finalPlot, combined)}``````{r display_combined_plot, fig.align='center'}#| label: display_combined_plot#| message: false#| warning: false#| code-summary: "Display events combined plot"historyPlot <- image_read(here("images", "historyOfEventsVert.gif"))historyPlot```To explore the relationship between historical events and the observations and discoveries of meteors, we employ an animated line graph showcasing the frequency of meteor observations per year. This dynamic visualization allows us to discern any correlations between significant historical events and spikes or dips in meteor observations over time. By incorporating annotations representing major historical events, we can examine whether certain events coincide with increased or decreased activity in the study of meteors.The animation illustrates the progression of meteor observations across different time periods, with historical events appearing on the timeline as they occur. This approach enables us to identify potential patterns or trends in meteor observation activity associated with specific historical events. For instance, we may observe a surge in meteor findings following significant milestones in space exploration, such as the space race era. By analysing the relationship between historical events and meteor observations, we aim to uncover insights into the societal and scientific factors influencing the study of meteors throughout history.This analysis not only enhances our understanding of the interplay between historical events and meteor observations but also sheds light on the broader context in which meteor studies have evolved. By contextualizing meteor observations within historical narratives, we can glean valuable insights into the motivations and influences driving scientific inquiry in the field of meteoritics.## Question 3: Are trends observed in frequency, type, or location of meteors, related to known celestial events?```{r asteroid_meteor_plot}#| label: asteroid_meteor_plot#| message: false#| warning: false#| code-summary: "Asteroid Meteor Plot"# Load asteroid orbital data from NASA's Jet Propulsion Laboratory "Horizons" system.# https://ssd.jpl.nasa.gov/horizons/earth_orbit <- read.csv('shiny_asteroids/daily_orbitals/earth.csv')flora_orbit <- read.csv('shiny_asteroids/daily_orbitals/8flora.csv')hebe_orbit <- read.csv('shiny_asteroids/daily_orbitals/6hebe.csv')vesta_orbit <- read.csv('shiny_asteroids/daily_orbitals/4vesta.csv')itokawa_orbit <- read.csv('shiny_asteroids/daily_orbitals/itokawa.csv')asteroid_orbits <- rbind(flora_orbit, hebe_orbit, vesta_orbit, itokawa_orbit, earth_orbit) |> mutate( date = as.Date(paste(year,month,day,sep='-')), body = case_when( body == '8flora' ~ 'flora', body == '6hebe'~ 'hebe', body == '4vesta'~ 'vesta', body == 'itokawa'~ 'itokawa', body == 'earth' ~ 'earth' )) |> filter(date > as.Date("2000-01-01")) |> filter(date < as.Date("2005-03-01"))# Load augmented meteorite data # Filtered to only include meteorites:# > thought to come from one of four asteroids# > observed since 1980# > fall observed (not found)# # Month of fall data obtained from The Meteorological Society# https://www.lpi.usra.edu/meteor/dated_recents <- read.csv('shiny_asteroids/data/dated_recents.csv') |> drop_na(month) |> mutate(parent_body = case_when( parent_body == '4vesta' ~ 'vesta', parent_body == '8flora' ~ 'flora', parent_body == '6hebe' ~ 'hebe', TRUE ~ parent_body ))get_orbital_colnames <- function(prefix) { c(paste(rep(prefix, 3), c('x', 'y', 'z'), sep=''))}# Distance functioneuc_dist <- function(a, b) { sqrt(sum((a - b) ^ 2))}orbital_data <- cbind(earth_orbit, flora_orbit[c('x','y','z')], hebe_orbit[c('x','y','z')], vesta_orbit[c('x','y','z')], itokawa_orbit[c('x','y','z')])colnames(orbital_data) <- c( colnames(earth_orbit), get_orbital_colnames('flora_'), get_orbital_colnames('hebe_'), get_orbital_colnames('vesta_'), get_orbital_colnames('itokawa_'))recent_orbits <- orbital_data |> rowwise() |> mutate(flora_dist = euc_dist(c(flora_x, flora_y, flora_z), c(x, y, z))) |> mutate(hebe_dist = euc_dist(c(hebe_x, hebe_y, hebe_z), c(x, y, z))) |> mutate(vesta_dist = euc_dist(c(vesta_x, vesta_y, vesta_z), c(x, y, z))) |> mutate(itokawa_dist = euc_dist(c(itokawa_x, itokawa_y, itokawa_z), c(x, y, z))) asteroid_colors <- c("vesta" = '#648fff', "flora" = '#dc267f', "hebe" = '#fe6100', "itokawa" = '#ffb000')# Inputs: date range (min_date, max_date) and asteroids of interest (asteroids_input)# Outputs: Line plot of asteroid distance from earth over date rangeplot_distances <- function(min_date, max_date, asteroids_input) { orbit_range <- recent_orbits |> filter(as.Date(paste(year, month, day, sep='-')) >= min_date & as.Date(paste(year, month, day, sep='-')) <= max_date) |> mutate(ym = as.Date(paste(year, month, '01', sep ='-'))) |> group_by(ym) |> summarise( min_flora = mean(flora_dist), min_hebe = mean(hebe_dist), min_vesta = mean(vesta_dist), min_itokawa = mean(itokawa_dist)) |> ungroup() |> pivot_longer( cols = -ym, names_to = 'asteroid', values_to = 'min_dist', names_prefix = 'min_', ) |> filter(asteroid %in% asteroids_input) orbit_range |> mutate(asteroid = fct_relevel(asteroid, c('vesta', 'flora', 'hebe', 'itokawa'))) |> ggplot(aes(x=ym, y=min_dist, group=asteroid, color=asteroid)) + xlim(min_date, max_date) + geom_line(linewidth=1) + theme_minimal() + scale_y_continuous(labels = function(x){paste(round(x / 1e6, 2), 'M km', sep='') }) + theme( axis.text.x = element_text( size=10 ), axis.text.y = element_text( size=8 ), axis.title = element_blank(), legend.position = 'none') + scale_color_manual(values = asteroid_colors) + scale_x_date(date_breaks = '1 year', date_labels = "%Y")}# Inputs: date range (min_date, max_date) and asteroids of interest (asteroids_input)# Outputs: Bar plot indicating number of meteorites probably from asteroids of interest over date rangeplot_falls <- function(min_date, max_date, asteroids_input) { dated_recents |> mutate(ym = as.Date(paste(year, month, '01', sep ='-'))) |> filter(ym >= min_date & ym <= max_date) |> group_by(ym, group, parent_body) |> summarise(n=n()) |> mutate(parent_body = fct_relevel(parent_body, c('vesta', 'flora', 'hebe', 'itokawa'))) |> filter(parent_body %in% asteroids_input) |> ggplot(aes(x=ym, y=n, xmin=min_date, xmax=max_date, fill=parent_body)) + xlim(min_date, max_date) + geom_col(width=30) + theme_minimal() + scale_y_continuous(labels = function(x){paste(' ', x, sep='') }) + theme( legend.position='top', legend.justification='left', axis.text.y = element_text( size=8 ), axis.text.x = element_blank(), axis.title = element_blank() ) + labs( title = "Observed Meteor Fall Events and Distance from Probable Parent", subtitle = "From years 2000 to 2005" ) + scale_fill_manual(name = "Probable Parent Asteroid", values = asteroid_colors, labels = c("6 Hebe", "8 Flora", "Itokawa", "4 Vesta"))}min_date <- as.Date('2000-01-01')max_date <- as.Date('2005-01-01')asteroid_list <- c('vesta', 'flora', 'hebe', 'itokawa')grid.arrange(plot_falls(min_date, max_date, asteroid_list), plot_distances(min_date, max_date, asteroid_list), nrow=2)```When a meteorite arrives on earth, its entrance is dependably marked by a dramatic display of flash and fireball as the space rock enters Earth's atmosphere. But where do these meteorites come from? By analyzing variables such as mineral composition and trajectory, scientists are able to hypothesize which heavenly bodies meteors originate from. Is there a relationship between these dramatic meteor-fall events and Eath's proximity to known parent bodies?To answer this question, we developed a Shiny application designed to analyze a specific subset of our meteor dataset, focusing on observed meteorite falls from 1980-2010 that are thought to originate from one of four asteroids: Vesta, 6 Hebe, 8 Flora, and Itokawa.In addition to meteorite fall observations, positional asteroid data is used to determine parent body distance from earth, and allow spatial relationships to be visualized in 3D.To accomplish this, the dataset was filtered to include only meteorites that were observed falling, and not necessarily found. Of these meteorites, the four most frequent groups were selected, those being L, LL, and R chondrites, as well as the HED (howardite–eucrite–diogenite) class. Cursory research was then conducted on Wikipedia to identify which asteroid bodies the groups were thought to originate from. By definition, HED meteorites likely come from Vesta. L chondrites are likely from the Flora family (spatially represented by Flora 8), and H chondrites from 6 Hebe. The theoretical provenance of LL chondrites maintains the least confidence of all meteor types, though its shared mineral composition with Itokawa hints that meteorites of this group may hail from the same region as this asteroid.Orbital locations for these four parent bodies acquired from NASA Jet Propulsion Laboratory Horizons System*.\** This data was then used in conjunction with the original meteor dataset and additional month-of-meteorite-fall data manually retrieved from the Meteoritical Bulletin Database\*\*. All together, we were able to develp a shiny app comprising the following visualizations for a given time range: A bar plot indicating meteorite fall observations grouped by theoretical parent body, a line plot indicating the distance between earth and each asteroid of interest, and a 3D representation of the orbital trajectory of earth and asteroids around the sun, as well as asteroid/earth locations at specific times. The 3D plot was developed with basic functions of the RGL library.A small date range for the 2D data plots is pictured above. While this is a small slice of data, it is representative in that one probably could not use visual analysis alone to claim a relationship between parent asteroid and resultant meteorite falls. If such a relationship does exist, it appears to require more sensitive statistical analysis than just eyeballing it. Nevertheless, the resulting shiny app provides a novel, edifying interface for assessing and contextualizing meteorite events and earth's spatial relationship with meteorite producing bodies.The application is pictured below, and may be accessed [here](https://jgaiser.shinyapps.io/app1/).![](images/clipboard-621965383.png)## Conculsion"Meteoric Fall: A Comet-ment to Data" embarked on a journey to unravel the mysteries of meteorite impacts by employing various data visualization techniques. Our project sought to explore the intricate relationships between Earth and space through dynamic visualizations, delving into questions surrounding meteorite distribution, historical events, and celestial phenomena. By leveraging interactive tools like leaflet maps, animated timelines, and density maps, we unearthed captivating insights into the geographic distribution of meteor impacts and their correlation with historical occurrences and known celestial events. From identifying continents with the highest meteorite accumulation to elucidating the interplay between Earth's proximity to astronomical phenomena, our analysis offers a nuanced understanding of meteorites. Through user-friendly visualizations, we aspire to ignite curiosity and foster deeper exploration in fields such as geology, astronomy, and data analytics, paving the way for future discoveries and scientific advancements.\*<https://ssd.jpl.nasa.gov/horizons/>\*\*<https://www.lpi.usra.edu/meteor/about.php>