Program 10

Author

PRACHETAN MS

Program

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

Step 1 : Load Required Library

# Load the ggplot2 for plotting
library(ggplot2)
plot_density_by_group <- function(data, continous_var, group_var,
                                  fill_colors = NULL) {
  
  # Check if the specified columns exist
  if (!(continous_var %in% names(data)) || !(group_var %in% names(data))) {
    stop("Invalid column names. Make sure both variables exist in the dataset.")
  }
  
  # Create the ggplot object
  p <- ggplot(data, aes_string(x = continous_var, 
                               color = group_var, 
                               fill = group_var)) +
    geom_density(alpha = 0.4) +
    labs(title = paste("Density plot of", continous_var, "by", group_var),
         x = continous_var,
         y = "Density") +
    theme_minimal()
  
  # Apply custom fill color if provided
  if (!is.null(fill_colors)) {
    p <- p +
      scale_fill_manual(values = fill_colors) +
      scale_color_manual(values = fill_colors)
  }
  
  # Return the plot
  return(p)
}
# Basic usage
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.

# Define custom colors
custom_colors <- c("setosa" = "steelblue",
                   "versicolor" = "forestgreen",
                   "virginica" = "darkorange")

# Plot with correct argument name
plot_density_by_group(iris, "Petal.Length", "Species", fill_colors = custom_colors)

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

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

plot_density_by_group(iris, "Sepal.Width", "Species", fill_colors = custom_colors)