Data source: Crime Statistics Agency Victoria (CSA), 2025.
Pulling data, from Victoria’s Crime Statistics Agency this study digs into the headline crime trends that have left their mark on the state between 2015 and 2025.It examines how crime rates differ from one Local Government Area (LGA), to another maps how those figures have shifted over time and spotlights the offences that make up the bulk of Victoria’s crime.Through a storytelling lens the report charts these trends. Reveals how population density, local conditions and community factors intertwine with the spread of crime, across the state, over the last decade.
# Load the Crime Statistics Agency (CSA) dataset
crime_data <- read_excel("data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx")
head(crime_data)
## # A tibble: 6 × 2
## Contents ...2
## <chr> <chr>
## 1 Table 01 Offences recorded and rate per 100,000 population by police region a…
## 2 Table 02 Offences recorded and rate per 100,000 population by offence type, l…
## 3 Table 03 Offences recorded by offence type, local government area and postcod…
## 4 Table 04 Offences recorded by location type and local government area - July …
## 5 Table 05 Offences recorded by investigation status and local government area …
## 6 Table 06 Select drug offences by drug type and local government area - July 2…
excel_sheets("data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx")
## [1] "Contents" "Footnotes" "Table 01" "Table 02" "Table 03" "Table 04"
## [7] "Table 05" "Table 06"
# Load "Table 01" from the Excel file
crime_lga <- read_excel("data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx",
sheet = "Table 01")
head(crime_lga)
## # A tibble: 6 × 6
## Year `Year ending` `Police Region` `Local Government Area` `Offence Count`
## <dbl> <chr> <chr> <chr> <dbl>
## 1 2025 June 1 North West Metro Banyule 11203
## 2 2025 June 1 North West Metro Brimbank 18876
## 3 2025 June 1 North West Metro Darebin 19077
## 4 2025 June 1 North West Metro Hobsons Bay 7927
## 5 2025 June 1 North West Metro Hume 23194
## 6 2025 June 1 North West Metro Maribyrnong 12352
## # ℹ 1 more variable: `Rate per 100,000 population` <dbl>
# Focus on 2025 data only
crime_2025 <- crime_lga %>%
filter(Year == 2025)
# Select top 10 LGAs by offence rate
top_lgas <- crime_2025 %>%
arrange(desc(`Rate per 100,000 population`)) %>%
slice_head(n = 10)
top_lgas %>%
select(`Local Government Area`, `Rate per 100,000 population`, `Offence Count`)
## # A tibble: 10 × 3
## `Local Government Area` `Rate per 100,000 population` `Offence Count`
## <chr> <dbl> <dbl>
## 1 Melbourne 23520. 45765
## 2 Latrobe 17636. 14010
## 3 Yarra 15524. 15853
## 4 Greater Shepparton 15492. 10927
## 5 Mildura 14758. 8552
## 6 Ararat 14537. 1700
## 7 Port Phillip 13611. 15615
## 8 Greater Dandenong 13343. 22529
## 9 Maribyrnong 12958. 12352
## 10 Benalla 12613. 1859
ggplot(top_lgas, aes(x = reorder(`Local Government Area`, `Rate per 100,000 population`),
y = `Rate per 100,000 population`)) +
geom_col(fill = "#e63946") +
coord_flip() +
labs(title = "Top 10 LGAs by Crime Rate in Victoria (2025)",
x = "Local Government Area",
y = "Rate per 100,000 population") +
theme_minimal(base_size = 12)
## Storytelling Insight
The chart is showing the areas in Victoria with the highest crime rates in 2025. Melbourne has the highest rate, with more than 23,000 crimes for every 100,000 people, making it much higher than anywhere else. The reason behind it could be because it’s a big city with lots of people, nightlife, and visitors. Latrobe and Yarra comes next, having both rates over 15,000. These places may face issues like lower income or fewer local services. Benalla and Maribyrnong are also in the top ten, even when they have fewer total crimes. This goes to show that smaller areas can still have high rates when the population is smaller. overall, the results raises questions about how the police and prevention programs are shared between big cities and smaller towns
# Trend over time: overall crime rate across Victoria
trend_data <- crime_lga %>%
group_by(Year) %>%
summarise(avg_rate = mean(`Rate per 100,000 population`, na.rm = TRUE))
ggplot(trend_data, aes(x = Year, y = avg_rate)) +
geom_line(color = "#1d3557", size = 1.2) +
geom_point(color = "#e63946", size = 3) +
labs(title = "Average Crime Rate in Victoria (2015–2025)",
x = "Year",
y = "Average Rate per 100,000 population") +
theme_minimal(base_size = 12)
the chart shows the average crime rate in Victoria from 2015-2025. Crime dropped significantly around 2021-2022, that is when the COVID-19 virus started and most places are in lockdown which means people stayed home and movement was limited. After that, crime went up again in 2025 as life returned to normal. This rise could be because since the pandemic is over, there are more public activity, money pressures, and population growth. This also means that areas like Melbourne and Latrobe are not alone, their high crime rates are part of a bigger pattern across Victoria.
# Load Table 02 from the Excel file (offence type by LGA and police service area)
crime_types <- read_excel(
"data/Data_Tables_LGA_Recorded_Offences_Year_Ending_June_2025.xlsx",
sheet = "Table 02"
)
# Preview the first few rows
head(crime_types)
## # A tibble: 6 × 10
## Year `Year ending` `Police Service Area` `Local Government Area`
## <dbl> <chr> <chr> <chr>
## 1 2025 June Ballarat Ballarat
## 2 2025 June Ballarat Ballarat
## 3 2025 June Ballarat Ballarat
## 4 2025 June Ballarat Ballarat
## 5 2025 June Ballarat Ballarat
## 6 2025 June Ballarat Ballarat
## # ℹ 6 more variables: `Offence Division` <chr>, `Offence Subdivision` <chr>,
## # `Offence Subgroup` <chr>, `Offence Count` <dbl>,
## # `PSA Rate per 100,000 population` <dbl>,
## # `LGA Rate per 100,000 population` <dbl>
# Focus on 2025 data only
crime_types_2025 <- crime_types %>%
filter(Year == 2025)
# Summarise by Offence Division
crime_division_summary <- crime_types_2025 %>%
group_by(`Offence Division`) %>%
summarise(total_offences = sum(`Offence Count`, na.rm = TRUE)) %>%
arrange(desc(total_offences))
crime_division_summary
## # A tibble: 6 × 2
## `Offence Division` total_offences
## <chr> <dbl>
## 1 B Property and deception offences 377000
## 2 E Justice procedures offences 97418
## 3 A Crimes against the person 96758
## 4 C Drug offences 32390
## 5 D Public order and security offences 29634
## 6 F Other offences 1552
ggplot(crime_division_summary,
aes(x = reorder(`Offence Division`, total_offences),
y = total_offences)) +
geom_col(fill = "#457b9d") +
coord_flip() +
labs(title = "Total Recorded Offences by Crime Type in Victoria (2025)",
x = "Offence Division",
y = "Total Offence Count") +
theme_minimal(base_size = 12)
The chart shows which types of crimes were the most common in Victoria in 2025. The biggest are crimes of theft and deception, that includes stealing, break-ins, and fraud. These happens more often in cities and suburbs.
Next are crimes against people, like fights or assaults.
Drug offences come after that, and most of the time it depends on how much the police actually focuses on the drug activity. Overall, most of the crimes in Victoria are non-violent and happen because of opportunity, especially in packed/busy places like Melbourne and greater Dandenong.
There has been a kaleidoscope of change in crime in Victoria; from falling to rising, then shifting from 2015 to 2025. Crime rates had dropped during the years of the pandemic as a result of the enforced lockdowns and reduced mobility of people but increased again in 2025 as things went back to normal.
City size and social factors play an immense role, as evidenced by some of the highest crime rates still being in areas like Melbourne, Latrobe, and Yarra.Most of Victoria’s crime comes from theft and fraud, so it is not surprising that property and deception offenses are still the most typical offenses.
This project has demonstrated how open data can narrate real stories to allow people to comprehend trends, support better decisions, and plan ways to make communities safer.
Crime statistics gain more meaning when combined with other social and economic data.Places with high unemployment and low SEIFA scores tend to have higher crime rates because of economic hardship and lack of resources.
Conversely, regions with adequate youth programs and other public facilities tend to have low crime in the long run.Social factors like these matter when we look at how crime patterns change over time.And this is what makes the open data storytelling platform so helpful in grasping some of the core issues affecting various communities.
Crime Statistics Agency Victoria. (2025). Recorded offences by
local government area, year ending June 2025 [Data set]. Crime
Statistics Agency.
https://www.crimestatistics.vic.gov.au/crime-statistics/latest-crime-data