Program 10

Author

1NT23IS244 - SECTION D - VARSHA S

Develop an R function to draw a density curve representing the probability density function of a continuous variable, with separate curves for each group, using ggplot2.

Step 1: Load the required libraries

library(ggplot2)

Step 2: Define the function

plot_density_by_group <- function(data, continuous_var, group_var, fill_colors = NULL){
  if(!(continuous_var %in% names(data)) || !(group_var %in% names(data))){
    stop("Invalid column names. Make sure both variables exist in the dataset.")
  }
  
  p<-ggplot(data, aes_string(x=continuous_var, color=group_var, fill=group_var)) +
    geom_density(alpha=0.4) +
    labs(title = paste("Density plot of", continuous_var, "by", group_var),
         x = continuous_var,
         y = "Density") +
    theme_minimal()
  
  #Custom fill colors if provided
  if(!is.null(fill_colors)){
    p <- p + scale_fill_manual(values = fill_colors) +
      scale_color_manual(values = fill_colors)
  }
  return(p)
}

Step 3: Example with Built-in iris dataset

plot_density_by_group(iris, "Sepal.Length", "Species")
Warning: `aes_string()` was deprecated in ggplot2 3.0.0.
ℹ Please use tidy evaluation idioms with `aes()`.
ℹ See also `vignette("ggplot2-in-packages")` for more information.

Step 4: Example with custom colors

custom_colors <- c("setosa" = "steelblue",
                   "versicolor" = "forestgreen",
                   "virginica" = "darkorange")

plot_density_by_group(iris, "Petal.Length", "Species", fill_colors = custom_colors)