Load Required Packages

library(tidyverse)
library(ggplot2)
library(scales)

Generate Sample Data

set.seed(123)
bike_categories <- c('Cross Country Race', 'Elite Road', 'Trail', 
                     'Endurance Road', 'Over Mountain', 'Triathalon', 
                     'Sport', 'Cyclocross', 'Fat Bike')

time_points <- 1:20

bike_data <- data.frame()

for (category in bike_categories) {
  if (category == "Cross Country Race") {
    sales <- runif(20, 0.5, 2.0) * 1000000
  } else if (category == "Elite Road") {
    sales <- runif(20, 0.3, 1.5) * 1000000
  } else if (category == "Trail") {
    sales <- runif(20, 0.2, 1.0) * 1000000
  } else if (category == "Endurance Road") {
    sales <- runif(20, 0.3, 1.0) * 1000000
  } else if (category == "Over Mountain") {
    sales <- runif(20, 0.2, 0.7) * 1000000
  } else if (category == "Triathalon") {
    sales <- runif(20, 0.1, 0.5) * 1000000
  } else if (category == "Sport") {
    sales <- runif(20, 0.05, 0.3) * 1000000
  } else if (category == "Cyclocross") {
    sales <- runif(20, 0.05, 0.25) * 1000000
  } else {
    sales <- runif(20, 0.02, 0.15) * 1000000
  }
  
  df <- data.frame(
    Time = time_points,
    Sales = sales,
    Category = category
  )
  bike_data <- rbind(bike_data, df)
}

Bike Sales by Category

category_colors <- c(
  'Cross Country Race' = '#2C3E50',
  'Elite Road' = '#E74C3C',
  'Trail' = '#16A085',
  'Endurance Road' = '#D4AC6E',
  'Over Mountain' = '#85C1E2',
  'Triathalon' = '#34495E',
  'Sport' = '#95A5A6',
  'Cyclocross' = '#E67E73',
  'Fat Bike' = '#7F8C8D'
)

ggplot(bike_data, aes(x = Time, y = Sales)) +
  geom_line(aes(color = Category), linewidth = 1, show.legend = FALSE) +
  geom_point(aes(color = Category), size = 2, show.legend = FALSE) +
  facet_wrap(~ Category, scales = "free_y", ncol = 3) +
  scale_color_manual(values = category_colors) +
  scale_y_continuous(labels = dollar_format(scale = 1e-6, suffix = "M")) +
  labs(x = "", y = "Sales") +
  theme_minimal() +
  theme(
    strip.background = element_rect(fill = "#2C3E50", color = "#2C3E50"),
    strip.text = element_text(size = 11, face = "bold", color = "white"),
    panel.background = element_rect(fill = "gray95"),
    panel.grid.major = element_line(color = "white", linewidth = 0.5),
    panel.grid.minor = element_line(color = "white", linewidth = 0.3),
    axis.text = element_text(size = 9),
    axis.title.y = element_text(size = 11, face = "bold")
  )