Introduction

Chicago is often known for being a beautiful and prosperous city, but it is also known as one of the most dangerous cities in the United States. Despite being so dangerous, it is widely regarded that Chicago has some of the strictest gun laws in the nation. Littered with crime and violence for decades, it’s important to track how these activities have trended over time to see if any improvements have been made. This study aims to transform raw Chicago crime data from 2001 to 2024 into a visual story that tracks the evolution of public safety in the city using descriptive analysis.

Findings

Tab #1

This first visualization, a line chart, is a good starting point for showing how the number of crimes has changed year-over-year. It shows how overall crime has fallen drastically in Chicago since 2001, peaking in 2002 with a staggering 486,777 crimes committed in just one year. After this, crime rates fell steadily until 2014, and then remained roughly the same until 2019. Following this, massive dips in crime occurred in 2020 and into 2021, which saw the lowest number of crimes, with about 208,756. This record low can be attributed to the COVID-19 Pandemic, which left all Americans stuck in their homes, fearful of the disease. After COVID-19 had been mitigated, crime rates immediately shot back up in 2022 and 2023 to 2014-2019 levels. Overall, this trend line shows extremely positive improvements for the City of Chicago since 2001; that being said, there is still significant violence occurring, even at the low.

yearly_counts <- table(data$Year)
trend_data <- as.data.frame(yearly_counts)
colnames(trend_data) <- c("Year", "Total_Crimes")
trend_data$Year <- as.numeric(as.character(trend_data$Year))
ggplot(trend_data, aes(x = Year, y = Total_Crimes)) +
  geom_line(color = "gold", linewidth = 1) + 
  geom_point(color = "black") +
  annotate("text", x = 2002, y = 486777, label = "486,777 (Peak)", vjust = .3, hjust = -.2) +
  annotate("text", x = 2021, y = 208756, label = "208,756 (Low)", vjust = -.3, hjust = 1.3) +
  scale_y_continuous(labels = comma) +
  scale_x_continuous(breaks = seq(2001, 2024, by = 2)) +
  theme_minimal() +
  labs(title = "Total Chicago Crime Trend Line (2001 - 2024)",
       x = "Year",
       y = "Total Crimes Committed") +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

Tab #2

This bar chart provides a valuable insight into the most popular crimes committed in Chicago since 2001. As you can see, the most popular crime has been theft, with over 1.7 million reports over the last 24 years. Similar yet more violent crimes like burglary, robbery, and motor vehicle theft are other extremely common crime types, making up 4 of the 10 most common crimes. As a result of the high level of theft, many stores have begun to shut down in Chicago, like Walmart, Walgreens, and CVS. Battery is the second most frequent crime, with 1.5 million reports since 2001.

crime_table <- table(data$Primary.Type)

top_10_crimes <- sort(crime_table, decreasing = TRUE)[1:10]

plot_data <- as.data.frame(top_10_crimes)
colnames(plot_data) <- c("Crime", "Count")

ggplot(plot_data, aes(x = reorder(Crime, Count), y = Count)) +
  geom_bar(stat = "identity", fill = "darkorchid") +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  theme_minimal() +
  labs(title = "Most Frequent Crimes in Chicago (2001-2024)",
       x = "Type of Crime",
       y = "Total Number of Cases")+ 
  theme(plot.title = element_text(hjust = .5))+
  geom_text(aes(label = comma(Count)), 
            hjust = -0.1, 
            fontface = "bold") +
  coord_flip() +
  scale_y_continuous(labels = comma, expand = expansion(mult = c(0, .15)))

Tab #3

This horizontally stacked bar chart provides a breakdown of Chicago’s most prevalent offenses, once again showing that theft and battery are the two leaders of criminal acts in the city since 2001. By color-coding each bar by year, we can see the thickness of the yearly segments shrinking in more recent years (represented by browns and yellows), which visually supports the overall downward trend in crime. It also shows that the mix of crime is changing. While things like Narcotics and Burglaries have shrunk a lot, Deceptive Practice has stayed pretty steady. This suggests that while some street crimes are dropping, white-collar or fraud-based crimes are becoming a bigger piece of the pie.

crime_counts <- aggregate(x = list(Total = data$Year),by = list(Crime = data$Primary.Type, Year = data$Year),FUN = length)
top10 <- names(sort(tapply(crime_counts$Total, crime_counts$Crime, sum), decreasing = TRUE)[1:10])
crime_counts <- crime_counts[crime_counts$Crime %in% top10, ]

ggplot(crime_counts, aes(x = reorder(Crime, Total, FUN = sum), y = Total, fill = factor(Year))) +
  geom_bar(stat = "identity") +
  scale_fill_manual(values = colorRampPalette(RColorBrewer::brewer.pal(12, "Paired"))(length(unique(crime_counts$Year)))) +
  coord_flip() +
  scale_y_continuous(labels = comma) +
  labs(title = "Top 10 Crimes in Chicago by Year",
x = "Crime Type",
y = "Number of Crimes",
fill = "Year") +
theme_minimal()

Tab #4

These pie charts show a surprising trend in how many crimes actually result in arrest. Back in the early 2000’s, the Chicago Police Department were making arrests in 29% - 31% of cases. And that number stayed fairly similar in the early 2010’s, until roughly 2016 when it dropped by 8% in just three years. However, in the last couple of years, there has been a huge shift. By 2022, the arrest rate plummeted to just 12%, and it only ticked up slightly to 13% in 2024. This means that while total crime volume might be going down, the percentage of crimes being solved with an arrest has been cut in half. It’s a major change in how law enforcement is playing out on the streets compared to twenty years ago. This is a huge surprise, especially with the improvement in crime-solving technology, like CCTV and DNA analysis, one would think the amount of arrests occurring relative to crime have increased.

pie_subset <- subset(data, Year %in% c(2001,2004,2007,2010,2013,2016,2019,2022, 2024))

my_table <- as.data.frame(table(pie_subset$Year, pie_subset$Arrest))
colnames(my_table) <- c("Year", "Arrest", "Count")

my_table$Percent <- ave(my_table$Count, my_table$Year, FUN = function(x) x / sum(x))

ggplot(my_table, aes(x = "", y = Percent, fill = Arrest)) +
  geom_bar(stat = "identity", width = 1, color = "white") + 
  coord_polar("y", start = 0) + 
  facet_wrap(~Year) +
  scale_fill_manual(values = c("false" = "tomato", "true" = "springgreen"),
                    labels = c("No Arrest Made", "Arrest Made")) +
  geom_text(aes(label = percent(Percent, accuracy = 1)), 
            position = position_stack(vjust = 0.5),
            fontface = "bold", 
            size = 5) +
  theme_void() + 
  theme(plot.title = element_text(face = "bold", size = 16),
        strip.text = element_text(face = "bold", size = 12)) +
  labs(title = "Chicago Crimes Resulting In Arrest Over Time",
       fill = "Status")

Tab #5

While the earlier charts showed that general crime has been dropping, this histogram chart of yearly homicides tells a much more volatile story. Homicides don’t follow the same steady downward path as other crimes; instead, they show significant spikes that represent the city’s most violent periods. Looking at the data, we can see a relatively low period in the early 2010s, but that was followed by a massive surge around 2016 and another even larger peak during the 2020-2021 period. Even though the numbers have started to dip again in 2023 and 2024, they remain higher than the lows we saw a decade ago. This graph is important because it proves that even if there are fewer crimes overall, the most violent crimes (like murder) can still fluctuate wildly based on what’s happening in the city at that time.

data$Year <- as.numeric(as.character(data$Year))
homicides <- subset(data, Primary.Type == "HOMICIDE")
homicide_counts <- table(homicides$Year)

barplot(
  homicide_counts,
  las = 2,
  cex.names = 0.8,
  col = "firebrick",
  main = "Number of Homicides in Chicago by Year (2001–2024)",
  xlab = "Year",
  ylab = "Number of Homicides")

Conclusion

Looking at the data from the last 24 years, it is hard to give a simple yes or no answer as to whether Chicago is actually improving. On the one hand, the total volume of reported crime has dropped significantly since 2001. However, the rest of the data tells a much more complicated story. While overall crime is down, the arrest rate has plummeted from 30% to nearly 12%, and violent crimes like homicide have actually seen massive spikes in recent years. This creates a confusing situation where the streets have fewer reported incidents overall, yet crimes are less likely to result in an arrest and are often more violent. Ultimately, while the visual story shows a city that is changing, the rise in violence and the drop in police enforcement suggest that Chicago’s struggle with public safety is far from over.