Legal aid is a safety net for those who can’t afford a lawyer.
It means that if your landlord tries to unfairly evict you, if a doctor made a mistake during your operation, or if you aren’t getting the right disability benefit, you can still seek justice.
It means that our justice system is exactly that, and not simply for the wealthy.
However, the provision of free legal advice to the most vulnerable in society has been under attack.
Much of this has been attributed to the scope cuts enforced under the 2012 ‘Legal Aid, Sentencing and Punishment of Offenders Act’ (LASPO). This drastically restricted the remit of what counted as legal aid and who qualified for it.
But an attack on legal aid didn’t begin and end with LASPO: budget cuts began under a Labour government and have continued since LASPO was enforced in 2013.
# Import data
budget_data <- read_csv("data/legal_aid_budget.csv")
# Create a vector of labels for plot
budget_labels <- c("£1.5bn", "£3bn")
# Colours in colour palette from light to dark: "#FADBD8", "#EBEDEF", "#D6DBDF", "#AEB6BF", "#5D6D7E", "#34495e", "#2e4053")
# Analyse and plot
budget_plot <- budget_data %>%
select(year, aid_total) %>%
mutate(aid_total = aid_total/1000) %>%
ggplot(aes(x = year,
y = aid_total)) +
geom_line(group = 1, size = 1, lineend = "round") +
geom_rect(aes(xmin = "2005-06", xmax = "2012-13",
ymin = -Inf, ymax = Inf), fill = "#AEB6BF", alpha = 0.009) +
geom_rect(aes(xmin = "2012-13", xmax = "2018-19",
ymin = -Inf, ymax = Inf), fill = "#EC7063", alpha = 0.01) +
scale_y_continuous(labels = budget_labels, breaks = seq(1.5, 3, by=1.5), limits=c(0,3)) +
scale_x_discrete(labels = c("2005-06"," "," ", " ", " ",
" ", " ", "LASPO", " ", " ",
" ", " ", " ", "2018-19")) +
theme_minimal() +
theme(text= element_text(family = "Source Sans Pro"),
legend.position = "none",
panel.grid = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10, face = "bold"),
axis.line.x = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
plot.caption = element_text(size = 8, vjust = -1, colour = "dark grey")) +
labs(caption = "Source: House of Commons Library")
# Print plot
budget_plot
Scope cuts and budget cuts have proved a lethal combination. Since 2011, more than 2,000 law firms have stopped providing legal aid.
While there has been a drop in the number of providers for ‘criminal’ legal aid – the free legal advice given to people who have been arrested, charged or questioned by the police – it is the provision of ‘non-criminal’ legal aid that has taken the biggest hit. That is, free legal advice on everything else, from housing, to bankruptcy and domestic abuse.
# Import data
civil_data <- read_csv("data/Civil Providers.csv")
criminal_data<- read_csv("data/Criminal Providers.csv")
civil_criminal_data <- rbind(civil_data, criminal_data)
# Get summary stats on total drop in providers
summary_stat <- civil_criminal_data %>%
filter(region == "Total") %>%
rename(start = "2011-12",
end = "2017-18") %>%
mutate(drop = (start - end))
calc_figure <- sum(summary_stat$drop)
# Create a vector of labels for plot
civil_criminal_labels <- c("2,000", "4,000", "6,000", "8,000")
# Analyse and plot
civil_criminal_plot <- civil_criminal_data %>%
filter(region == 'Total') %>%
select(-region) %>%
gather(year, providers, 2:8) %>%
mutate("law_type" = ifelse(category == "solicitor_firms" | category == "not_for_profit_orgs",
"civil", "criminal")) %>%
group_by(law_type, year) %>%
summarise(total_providers = sum(providers)) %>%
ggplot(aes(x = year, y = total_providers, group = law_type, fill = "black")) +
geom_line(size = 1, lineend = "round") +
scale_y_continuous(labels = civil_criminal_labels, breaks = seq(2000, 8000, by=2000), limits=c(0,8000)) +
scale_x_discrete(labels = c("2011-12", " ", " ", " ", " ", " ", "2017-18")) +
theme_minimal() +
theme(text = element_text(family = "Source Sans Pro")) +
annotate("text", x = "2017-18", y = 6700, size = 4, family = "Source Sans Pro", label = "Criminal") +
annotate("text", x = "2017-18", y = 3150, size = 4, family = "Source Sans Pro", label = "Non-criminal") +
theme(text= element_text(family = "Source Sans Pro"),
legend.position = "none",
panel.grid = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10, face = "bold"),
axis.line.x = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
plot.caption = element_text(size = 8, vjust = -1, colour = "dark grey")) +
labs(caption = "Source: Ministry of Justice and Legal Aid Agency data via BBC Data Unit")
# Print plot
civil_criminal_plot
The loss of organisations providing legal aid has sparked a worrying rise in ‘advice deserts’, defined by the Law Society as areas with just one or no providers for a particular type of legal aid.
There are currently 39 ‘advice deserts’ for housing and 39 for debt across England and Wales.
# Import, extract and re-save datsets that contain >1 type of law so that they follow structure of datasets containing 1 type of law
housing <- read_csv("data/housing_debt.csv") %>% select(-Debt) %>% write_csv("data/housing.csv")
debt <- read_csv("data/housing_debt.csv") %>% select(-Housing) %>% write_csv("data/debt.csv")
police <- read_csv("data/police_public_law_mediation_clinical.csv") %>%
select(-'Public Law', -'Mediation', -'Clinical Negligence') %>% write_csv("data/police.csv")
public_law <- read_csv("data/police_public_law_mediation_clinical.csv") %>%
select(-'Actions against the Police', -'Mediation', -'Clinical Negligence') %>% write_csv("data/public_law.csv")
mediation <- read_csv("data/police_public_law_mediation_clinical.csv") %>%
select(-'Actions against the Police', -'Public Law', -'Clinical Negligence') %>% write_csv("data/mediation.csv")
clinical <- read_csv("data/police_public_law_mediation_clinical.csv") %>%
select(-'Actions against the Police', -'Public Law', -'Mediation') %>% write_csv("data/clinical.csv")
# Clear environment
remove(housing, debt, police, public_law, mediation, clinical)
# Create a vector listing the names of all datasets
all_datasets <- c('family', 'mental_health', 'community_care', 'welfare', 'housing', 'debt', 'police', 'public_law', 'mediation', 'clinical' )
# Create a function to import and tidy all datasets
import_tidy <- function(df){
read_csv(str_c("data/", df, ".csv")) %>%
rename(area = 1,
procurement_area = 2,
providers = 3,
population = 4) %>%
mutate("category" = df) %>%
filter(!is.na(area)) %>%
mutate(providers_per_million = round(providers / (population / 1000000)))
}
# Run the function, combine datasets into one master file and save
provisions_data <- purrr::map(all_datasets, import_tidy) %>% bind_rows() %>% write_csv("data/provisions.csv")
# Add regions data to provisions data
regions <- read_csv("data/regions.csv")
provisions_data <- left_join(provisions_data, regions, by = 'area')
# Group data by procurement area to calculate procurement area providers (as opposed to local authority)
calcs <- provisions_data %>%
group_by(procurement_area, category) %>%
summarise(procurement_area_providers = sum(providers)) %>%
mutate(advice_desert = ifelse(procurement_area_providers < 2, "yes", "no"))
# Add these calcs back into main dataset and add columns to group the number of procurement area providers into bins
advice_deserts_data <- left_join(provisions_data, calcs) %>%
mutate(pap_bins = ifelse(procurement_area_providers <2, " 'Advice desert' (<2 providers) ",
ifelse(procurement_area_providers <5, " <5 providers ",
ifelse(procurement_area_providers <10, " <10 providers ",
ifelse(procurement_area_providers <20, " <20 providers ",
ifelse(procurement_area_providers <30, " <30 providers ",
ifelse(procurement_area_providers <40, " <40 providers ", " 40+ providers ")))))))
# Create a factor to order the new "bins" for procurement area providers
pap_bins_order <- c(" 'Advice desert' (<2 providers) ", " <5 providers ", " <10 providers ", " <20 providers ", " <30 providers ", " <40 providers ", " 40+ providers ")
# Create a vector to set manual colour scale using https://htmlcolorcodes.com/
pap_cols <- c(" 'Advice desert' (<2 providers) " = "#FADBD8", " <5 providers " = "#EBEDEF", " <10 providers " = "#D6DBDF",
" <20 providers " = "#AEB6BF", " <30 providers " = "#5D6D7E", " <40 providers " = "#34495e", " 40+ providers " = "#2e4053")
# Change format of law categories within tooltip text
advice_deserts_data <- advice_deserts_data %>% mutate(category = fct_recode(category,
"public law" = "public_law",
"clinical negligence" = "clinical",
"mental health" = "mental_health",
"community care" = "community_care"))
# Create a column with text for interactive tooltip
advice_deserts_data <- advice_deserts_data %>% mutate(tooltip = paste(area, "has", procurement_area_providers,
"providers for", category,
"within the procurement area of", procurement_area))
# Plot
advice_deserts_plot <- ggplot(advice_deserts_data) +
geom_tile_interactive(aes(x = area, y = category, fill = pap_bins, tooltip = tooltip)) +
facet_grid(~ regions_official,
scales = "free_x", space = "free_x",
labeller = labeller(regions_official = label_wrap_gen(10))) +
scale_fill_manual(values = pap_cols,
limits = pap_bins_order,
name = "Key") +
scale_y_discrete(labels = c("Clinical negligence", "Community care",
"Debt", "Family", "Housing", "Mediation",
"Mental health", "Police", "Public law",
"Welfare")) +
theme(text= element_text(family = "Source Sans Pro"),
legend.position = "bottom",
legend.justification = "left",
legend.title = element_text(size = 6, face = "bold", colour = "black"),
legend.text = element_text(size = 6),
panel.background = element_blank(),
panel.spacing.x = unit(0.1, "lines"),
panel.border = element_rect(size = 0.25, colour = "grey", fill = NA),
strip.background = element_blank(),
axis.title = element_blank(),
axis.ticks = element_blank(),
axis.text.x = element_blank(),
strip.text.x = element_text(size = 6, colour = "black"),
axis.text.y = element_text(size = 6, colour = "black"),
plot.caption = element_text(size = 6, vjust = -1, colour = "dark grey")) +
guides(fill = guide_legend(nrow = 1,
keywidth = 0.1,
keyheight = 0.1,
default.unit = "inch")) +
labs(caption = "Source: Ministry of Justice and Legal Aid Agency data via BBC Data Unit.")
# Print inteactive plot
girafe(code = print(advice_deserts_plot))
One of the challenges in assessing the provision of legal aid is that it is monitored by ‘procurement area’: the administrative units that fund legal aid locally.
But, as evident above, these procurement areas vary wildly in size depending on the type of legal aid you’re talking about.
For example, while legal aid for housing, family and debt are administered by 139 different local authorities, legal aid for welfare, public law and others are administered by a handful of large regions, such as the South West.
This obscures the picture, because we’re not really comparing like with like. Is it more concerning that there is only one legal aid provider for housing in Barnsley, or that there are just four legal aid providers for welfare across the whole of the South West and Wales?
If we look at legal aid provision solely at the local authority level, we (arguably) get a better sense of the gaps in legal aid provision across the country. And it’s patchy to the say the least.
Thanks to cuts, closures and ‘advice deserts’, there are now 600,000 fewer people receiving legal aid each year than in 2010.
# Create a vector of labels for plot
case_load_labels <- c("0", "400,000", "800,000")
# Analyse and plot
case_load_plot <- read_csv("data/civil_case_load.csv") %>%
select(year, total) %>%
ggplot(aes(x = year, y = total)) +
geom_line(group = 1, size = 1, lineend = "round") +
scale_y_continuous(labels = case_load_labels, breaks = seq(0, 800000, by=400000), limits=c(0,800000)) +
scale_x_discrete(labels = c("2010-11", " ", " ", "2013-14", " ", " ", " ", "2017-18")) +
theme_minimal() +
theme(text= element_text(family = "Source Sans Pro"),
legend.position = "none",
panel.grid = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10, face = "bold"),
axis.line.x = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
plot.caption = element_text(vjust = -1, colour = "dark grey")) +
labs(caption = "Source: House of Commons Library")
# Print plot
case_load_plot
What happens to them?
Some will be able to get advice via the government’s Legal Aid telephone service – but only if their problem falls under the remit of housing, debt, discrimination, education or family matters. A few might run successful crowdfunding campaigns to pay for a private lawyer, using platforms such as Crowd Justice.
But most will be forced to either give up, or go it alone and at huge personal and societal costs.
The cost-saving benefits of cutting legal aid can prove a false economy when individuals initially in need of legal advice end up costing government services later on. For example, research has shown that a young adult with a legal aid problem who does not get early advice ends up costing local health, housing and social services around £13,000.
Meanwhile those who go to court without a lawyer are not only at a huge disadvantage in fighting their case, but also place additional costs on courts, who struggle to support them in making their case clearly and effectively.
Due to lack of reliable data, we don’t know how many more people are unrepresented in court. We do, however, know how many parties are unrepresented in family courts and what this reveals is cause enough for concern.
# Analyse and plot
table11 <- read_csv("data/table_11.csv") %>%
select(year, represented_total, unrepresented_total, parties_total) %>%
group_by(year) %>%
summarise_all(sum) %>%
mutate(represented_pct = round((represented_total/parties_total), 2),
unrepresented_pct = round((unrepresented_total/parties_total), 2)) %>%
select(year, represented_pct, unrepresented_pct) %>%
rename("Represented" = represented_pct,
"Unrepresented" = unrepresented_pct) %>%
gather(key, value, 2:3) %>%
ggplot(aes(x = year, y = value, colour = key)) +
geom_line(size = 1, lineend = "round") +
theme(text = element_text(family = "Source Sans Pro")) +
annotate("text", x = 2016.6, y = 0.65, size = 4, family = "Source Sans Pro", label = "Unrepresented") +
annotate("text", x = 2016.7, y = 0.35, size = 4, family = "Source Sans Pro", label = "Represented")
# Create vector of labels
table11_labels <- c("0", "20%", "40%", "60%", "80%")
# Set colour values
table11_cols <- c("Unrepresented" = "#FADBD8", "Represented" = "#AEB6BF")
# Customise plot
table11_plot <- table11 + scale_y_continuous(labels = table11_labels,
breaks = seq(0, 0.8, by=0.2), limits = c(0, 0.8)) +
scale_x_continuous(breaks = seq(2011, 2017, by = 2)) +
scale_colour_manual(values = table11_cols) +
theme_minimal() +
theme(text = element_text(family = "Source Sans Pro"),
legend.position = "none",
panel.grid = element_blank(),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.ticks.y = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
axis.text.y = element_text(size = 10),
axis.text.x = element_text(size = 10, face = "bold"),
axis.line.x = element_line(size = 0.75, colour = "dark grey", lineend = "round"),
plot.caption = element_text(size = 8, vjust = -1, colour = "dark grey")) +
labs(caption = "Note: Includes only those cases with at least one hearing and not those that didn't go to court.
Source: Family Court Statistics Quarterly, July to September 2018")
# Print plot
table11_plot
2019 is a big year for legal aid. It will turn 70 in July. And it will come under the spotlight when the much delayed government review of LASPO and its impact is finally published.
But if legal aid is to survive much beyond 70, we must start seeing it as a frontline service - as vital as the NHS, police and social care. If we don’t, these too could be brought to their knees.
Ministry of Justice and Legal Aid Agency data via BBC Data Unit.
Family Court Statistics Quarterly, July to September 2018: Family Court Tables, Table 11.