#Load the ggplot2 package
library(ggplot2)Program_10
##Program: 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.
##Objective: to draw a density curve representing the probability density of a continuous variable, with separate curves for each group, using ggplot2.
###Step 1: Load Required Library -ggplot2 to create density plots.
###Step 2: we will create a function called plot_density_by_group()
plot_density_by_group <- function(data, continuous_var, group_var,
fill_colors = NULL) {
# Check if the specified columns exist
if (!(continuous_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 = 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()
# Apply custom colors 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 custom colors
plot_density_by_group(iris, "Petal.Length", "Species", fill_colors=custom_colors)plot_density_by_group(iris, "Sepal.Width", "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)