# Load necessary libraries
pacman::p_load(pacman, readr, ggplot2, dplyr, scales, knitr, RColorBrewer)
# Read the CSV files
Marijuana_Legal_Status <- read_csv("Marijuana_Legal_Status.csv")
## Rows: 51 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): STATE, MARIJUANA LEGALIZATION STATUS
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
California_Marijuana_Tax_Revenue <- read_csv("California_Marijuana_Tax_Revenue.csv")
## Rows: 6 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): CALIFORNIA STATE MARIJUANA TAX REVENUE
## dbl (1): YEAR
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Total_Revenue <- read_csv("Total_Revenue.csv")
## Rows: 20 Columns: 3
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): STATE, TOTAL REVENUE COLLECTED
## dbl (1): FIRST YEAR OF TAX COLLECTION
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
X2023_Marijuana_Tax_Revenue <- read_csv("2023_Marijuana_Tax_Revenue.csv")
## Rows: 19 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (2): STATE, 2023 MARIJUANA TAX REVENUE
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# Bar Plot for 2023 Marijuana Tax Revenue
# Ensure that revenue is numeric
X2023_Marijuana_Tax_Revenue <- X2023_Marijuana_Tax_Revenue %>%
mutate(`2023 MARIJUANA TAX REVENUE` = as.numeric(gsub("[\\$,]", "", `2023 MARIJUANA TAX REVENUE`)))
ggplot(X2023_Marijuana_Tax_Revenue, aes(x = reorder(STATE, `2023 MARIJUANA TAX REVENUE`), y = `2023 MARIJUANA TAX REVENUE`)) +
geom_bar(stat = "identity", fill = "#33cc33") +
scale_y_continuous(labels = scales::comma) +
theme(axis.text.x = element_text(angle = 45, vjust = 0.5, hjust = 1)) +
labs(title = "USA: 2023 Marijuana Tax Revenue by State",
x = "State",
y = "Revenue ($)") +
theme() +
theme(legend.position = "none") # Remove legend

# Line Plot for California Marijuana Tax Revenue Over the Years
# Rename columns and ensure that revenue is numeric
California_Marijuana_Tax_Revenue <- California_Marijuana_Tax_Revenue %>%
rename(YEAR = `YEAR`, REVENUE = `CALIFORNIA STATE MARIJUANA TAX REVENUE`) %>%
mutate(REVENUE = as.numeric(gsub("[\\$,]", "", REVENUE)))
ggplot(California_Marijuana_Tax_Revenue, aes(x = YEAR, y = REVENUE)) +
geom_line(color = "#33cc33", size = 1.5) + # Increase line thickness
geom_point(color = "#000000") +
scale_y_continuous(labels = scales::comma) + # Scale y-axis with commas
labs(title = "California Marijuana Tax Revenue Over the Years",
x = "Year",
y = "Revenue ($)") +
theme()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

# Bar Plot for Total Tax Revenue Collected by State
# Rename columns and ensure that revenue is numeric
Total_Revenue <- Total_Revenue %>%
rename(STATE = `STATE`, TOTAL_REVENUE = `TOTAL REVENUE COLLECTED`, FIRST_YEAR = `FIRST YEAR OF TAX COLLECTION`) %>%
mutate(TOTAL_REVENUE = as.numeric(gsub("[\\$,]", "", TOTAL_REVENUE)))
# Create a colour palette for the years using RColorBrewer
year_colours <- scale_fill_brewer(palette = "Set3") # Using 'Set3' palette for distinct colours
ggplot(Total_Revenue, aes(x = reorder(STATE, TOTAL_REVENUE), y = TOTAL_REVENUE, fill = factor(FIRST_YEAR))) +
geom_bar(stat = "identity") +
scale_y_continuous(labels = scales::comma) +
year_colours + # Apply the colour palette
theme(axis.text.x = element_text(angle = 45, vjust = 0.5, hjust = 1)) +
labs(title = "USA: Total Marijuana Tax Revenue Collected by State",
x = "State",
y = "Total Revenue ($)",
fill = "First Year of Tax Collection") + # Add legend title
theme() +
theme(legend.position = "right") # Show legend on the right

# Pie Chart for 2023 Marijuana Tax Revenue Distribution (Top 10 only)
# Rename columns and ensure that revenue is numeric
X2023_Marijuana_Tax_Revenue <- X2023_Marijuana_Tax_Revenue %>%
rename(STATE = `STATE`, REVENUE_2023 = `2023 MARIJUANA TAX REVENUE`) %>%
mutate(REVENUE_2023 = as.numeric(gsub("[\\$,]", "", REVENUE_2023))) %>%
arrange(desc(REVENUE_2023)) %>%
mutate(PERCENTAGE = REVENUE_2023 / sum(REVENUE_2023) * 100) %>%
top_n(10, wt = REVENUE_2023) # Select top 10 states
ggplot(X2023_Marijuana_Tax_Revenue, aes(x = "", y = PERCENTAGE, fill = STATE)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(theta = "y") +
theme_void() +
labs(title = "USA: 2023 Marijuana Tax Revenue Distribution (Top 10 States)") +
theme(legend.position = "right") +
geom_text(aes(label = paste0("$", scales::label_number(scale = 1e-6, suffix = "M")(REVENUE_2023))),
position = position_stack(vjust = 0.5),
size = 4) # Add data labels with a dollar sign

# Pie Chart for Total Tax Revenue Collected by State (Top 7 only)
Total_Revenue_Top10 <- Total_Revenue %>%
arrange(desc(TOTAL_REVENUE)) %>%
mutate(PERCENTAGE = TOTAL_REVENUE / sum(TOTAL_REVENUE) * 100) %>%
top_n(7, wt = TOTAL_REVENUE)
ggplot(Total_Revenue_Top10, aes(x = "", y = PERCENTAGE, fill = STATE)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(theta = "y") +
theme_void() +
labs(title = "USA: Total Marijuana Tax Revenue Distribution (Top 7 States)") +
theme(legend.position = "right") +
geom_text(aes(label = paste0("$", scales::label_number(scale = 1e-6, suffix = "M")(TOTAL_REVENUE))),
position = position_stack(vjust = 0.5),
size = 4)

# Create a Table for Marijuana Legalisation Status
# Print the table
kable(Marijuana_Legal_Status, caption = "Marijuana Legalisation Status by State")
Marijuana Legalisation Status by State
Alabama |
Medical only |
Alaska |
Recreational legalized |
Arizona |
Recreational legalized |
Arkansas |
Medical only |
California |
Recreational legalized |
Colorado |
Recreational legalized |
Connecticut |
Recreational legalized |
Delaware |
Recreational legalized |
District of Columbia |
Recreational legalized |
Florida |
Medical only |
Georgia |
Medical CBD oil only |
Hawaii |
Medical only |
Idaho |
Illegal |
Illinois |
Recreational legalized |
Indiana |
Medical CBD oil only |
Iowa |
Medical CBD oil only |
Kansas |
Illegal |
Kentucky |
Medical only effective Jan. 1, 2025 |
Louisiana |
Medical only |
Maine |
Recreational legalized |
Maryland |
Recreational legalized |
Massachusetts |
Recreational legalized |
Michigan |
Recreational legalized |
Minnesota |
Recreational legalized |
Mississippi |
Medical only |
Missouri |
Recreational legalized |
Montana |
Recreational legalized |
Nebraska |
Illegal |
Nevada |
Recreational legalized |
New Hampshire |
Medical only |
New Jersey |
Recreational legalized |
New Mexico |
Recreational legalized |
New York |
Recreational legalized |
North Carolina |
Illegal |
North Dakota |
Medical only |
Ohio |
Medical only |
Oklahoma |
Medical only |
Oregon |
Recreational legalized |
Pennsylvania |
Medical only |
Rhode Island |
Recreational legalized |
South Carolina |
Illegal |
South Dakota |
Medical only |
Tennessee |
Medical CBD oil only |
Texas |
Medical CBD oil only |
Utah |
Medical only |
Vermont |
Recreational legalized |
Virginia |
Recreational legalized |
Washington |
Recreational legalized |
West Virginia |
Medical only |
Wisconsin |
Medical CBD oil only |
Wyoming |
Illegal |