यहां एक अन्य ggplot2
संस्करण है जो एक फ़ंक्शन पर आधारित है जो मूल डेटा मानों में कर्नेल घनत्व का अनुमान लगाता है:
approxdens <- function(x) {
dens <- density(x)
f <- with(dens, approxfun(x, y))
f(x)
}
मूल डेटा का उपयोग करना (घनत्व अनुमान के x और y मानों के साथ एक नया डेटा फ़्रेम का उत्पादन करने के बजाय) के लाभ की योजना है, जिसमें डेटासेट मान उन परिवर्तनीय प्लॉटों पर काम कर रहे हैं, जहां डेटा को समूहीकृत किया जा रहा है:
कोड का इस्तेमाल किया
library(tidyverse)
library(RColorBrewer)
# dummy data
set.seed(1)
n <- 1e2
dt <- tibble(value = rnorm(n)^2)
# function that approximates the density at the provided values
approxdens <- function(x) {
dens <- density(x)
f <- with(dens, approxfun(x, y))
f(x)
}
probs <- c(0.75, 0.95)
dt <- dt %>%
mutate(dy = approxdens(value), # calculate density
p = percent_rank(value), # percentile rank
pcat = as.factor(cut(p, breaks = probs, # percentile category based on probs
include.lowest = TRUE)))
ggplot(dt, aes(value, dy)) +
geom_ribbon(aes(ymin = 0, ymax = dy, fill = pcat)) +
geom_line() +
scale_fill_brewer(guide = "none") +
theme_bw()
# dummy data with 2 groups
dt2 <- tibble(category = c(rep("A", n), rep("B", n)),
value = c(rnorm(n)^2, rnorm(n, mean = 2)))
dt2 <- dt2 %>%
group_by(category) %>%
mutate(dy = approxdens(value),
p = percent_rank(value),
pcat = as.factor(cut(p, breaks = probs,
include.lowest = TRUE)))
# faceted plot
ggplot(dt2, aes(value, dy)) +
geom_ribbon(aes(ymin = 0, ymax = dy, fill = pcat)) +
geom_line() +
facet_wrap(~ category, nrow = 2, scales = "fixed") +
scale_fill_brewer(guide = "none") +
theme_bw()
2018-07-13 को रेप्रेक्स पैकेज ( v0.2.0 ) द्वारा बनाया गया ।