Skip to content

Commit 0dd27fb

Browse files
committed
Merge branch 'master' of github.com:hadley/ggplot2
2 parents 5c4ea9c + 8ed3635 commit 0dd27fb

File tree

5 files changed

+33
-16
lines changed

5 files changed

+33
-16
lines changed

NEWS.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
# ggplot2 2.0.0.9000
22

3+
* Add access to `bw` argument of `density` in `stat_density`, which makes
4+
it easy to get consistent smoothing between facets for example (@jiho)
5+
36
## Bug fixes and minor improvements
47

58
* `stat_function()` once again works with discrete x axes (#1509).

R/stat-density.r

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
#' @param adjust see \code{\link{density}} for details
1+
#' @param bw the smoothing bandwidth to be used, see
2+
#' \code{\link{density}} for details
3+
#' @param adjust adjustment of the bandwidth, see
4+
#' \code{\link{density}} for details
25
#' @param kernel kernel used for density estimation, see
36
#' \code{\link{density}} for details
47
#' @param trim This parameter only matters if you are displaying multiple
@@ -17,7 +20,7 @@
1720
#' @export
1821
#' @rdname geom_density
1922
stat_density <- function(mapping = NULL, data = NULL, geom = "area",
20-
position = "stack", adjust = 1, kernel = "gaussian",
23+
position = "stack", bw = "nrd0", adjust = 1, kernel = "gaussian",
2124
trim = FALSE, na.rm = FALSE,
2225
show.legend = NA, inherit.aes = TRUE, ...) {
2326

@@ -30,6 +33,7 @@ stat_density <- function(mapping = NULL, data = NULL, geom = "area",
3033
show.legend = show.legend,
3134
inherit.aes = inherit.aes,
3235
params = list(
36+
bw = bw,
3337
adjust = adjust,
3438
kernel = kernel,
3539
trim = trim,
@@ -47,7 +51,7 @@ StatDensity <- ggproto("StatDensity", Stat,
4751
required_aes = "x",
4852
default_aes = aes(y = ..density.., fill = NA),
4953

50-
compute_group = function(data, scales, adjust = 1, kernel = "gaussian",
54+
compute_group = function(data, scales, bw = "nrd0", adjust = 1, kernel = "gaussian",
5155
trim = FALSE, na.rm = FALSE) {
5256
if (trim) {
5357
range <- range(data$x, na.rm = TRUE)
@@ -56,7 +60,7 @@ StatDensity <- ggproto("StatDensity", Stat,
5660
}
5761

5862
compute_density(data$x, data$weight, from = range[1], to = range[2],
59-
adjust = adjust, kernel = kernel)
63+
bw = bw, adjust = adjust, kernel = kernel)
6064
}
6165

6266
)

R/stat-ydensity.r

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
#' @export
1919
#' @rdname geom_violin
2020
stat_ydensity <- function(mapping = NULL, data = NULL, geom = "violin",
21-
position = "dodge", adjust = 1, kernel = "gaussian",
21+
position = "dodge", bw = "nrd0", adjust = 1, kernel = "gaussian",
2222
trim = TRUE, scale = "area", na.rm = FALSE,
2323
show.legend = NA, inherit.aes = TRUE, ...) {
2424
scale <- match.arg(scale, c("area", "count", "width"))
@@ -32,6 +32,7 @@ stat_ydensity <- function(mapping = NULL, data = NULL, geom = "violin",
3232
show.legend = show.legend,
3333
inherit.aes = inherit.aes,
3434
params = list(
35+
bw = bw,
3536
adjust = adjust,
3637
kernel = kernel,
3738
trim = trim,
@@ -51,7 +52,7 @@ StatYdensity <- ggproto("StatYdensity", Stat,
5152
required_aes = c("x", "y"),
5253
non_missing_aes = "weight",
5354

54-
compute_group = function(data, scales, width = NULL, adjust = 1,
55+
compute_group = function(data, scales, width = NULL, bw = "nrd0", adjust = 1,
5556
kernel = "gaussian", trim = TRUE, na.rm = FALSE) {
5657
if (nrow(data) < 3) return(data.frame())
5758

@@ -61,7 +62,7 @@ StatYdensity <- ggproto("StatYdensity", Stat,
6162
range <- scales$y$dimension()
6263
}
6364
dens <- compute_density(data$y, data$w, from = range[1], to = range[2],
64-
adjust = adjust, kernel = kernel)
65+
bw = bw, adjust = adjust, kernel = kernel)
6566

6667
dens$y <- dens$x
6768
dens$x <- mean(range(data$x))
@@ -75,11 +76,11 @@ StatYdensity <- ggproto("StatYdensity", Stat,
7576
dens
7677
},
7778

78-
compute_panel = function(self, data, scales, width = NULL, adjust = 1,
79+
compute_panel = function(self, data, scales, width = NULL, bw = "nrd0", adjust = 1,
7980
kernel = "gaussian", trim = TRUE, na.rm = FALSE,
8081
scale = "area") {
8182
data <- ggproto_parent(Stat, self)$compute_panel(
82-
data, scales, width = width, adjust = adjust, kernel = kernel,
83+
data, scales, width = width, bw = bw, adjust = adjust, kernel = kernel,
8384
trim = trim, na.rm = na.rm
8485
)
8586

man/geom_density.Rd

Lines changed: 8 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

man/geom_violin.Rd

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)