6c9cd355 |
|
1d4d6914 |
##' add tip point
##'
|
102483c0 |
##'
|
1d4d6914 |
##' @title geom_tippoint
|
6c9cd355 |
##' @inheritParams geom_point2
|
1d4d6914 |
##' @return tip point layer
##' @export
##' @author Guangchuang Yu
|
102483c0 |
geom_tippoint <- function(mapping = NULL, data = NULL,
|
6c9cd355 |
position = "identity", na.rm = FALSE,
show.legend = NA, inherit.aes = TRUE, ...) {
|
1d4d6914 |
isTip <- NULL
|
6c9cd355 |
self_mapping <- aes(subset = isTip)
if (is.null(mapping)) {
mapping <- self_mapping
} else {
|
4666eab4 |
mapping <- modifyList(self_mapping, mapping)
|
6c9cd355 |
}
|
102483c0 |
geom_point2(mapping, data, position, na.rm, show.legend, inherit.aes, ...)
|
1d4d6914 |
}
|
869644d4 |
## angle is not supported,
## https://github.com/GuangchuangYu/ggtree/issues/77
##
##
## geom_tippoint2 <- function(mapping=NULL, hjust=0, ...) {
## angle <- NULL
## isTip <- NULL
## m1 <- aes(subset=(isTip & (angle < 90 | angle > 270)), angle=angle)
## m2 <- aes(subset=(isTip & (angle >= 90 & angle <=270)), angle=angle+180)
|
4666eab4 |
|
869644d4 |
## if (!is.null(mapping)) {
## m1 <- modifyList(mapping, m1)
## m2 <- modifyList(mapping, m2)
## }
|
4666eab4 |
|
869644d4 |
## list(geom_tippoint(m1, hjust=hjust, ...),
## geom_tippoint(m2, hjust=1-hjust, ...)
## )
## }
|
4666eab4 |
|
1d4d6914 |
##' add node point
##'
|
102483c0 |
##'
|
1d4d6914 |
##' @title geom_nodepoint
|
6c9cd355 |
##' @inheritParams geom_point2
|
1d4d6914 |
##' @return node point layer
##' @export
##' @author Guangchuang Yu
|
102483c0 |
geom_nodepoint <- function(mapping = NULL, data = NULL,
|
6c9cd355 |
position = "identity", na.rm = FALSE,
show.legend = NA, inherit.aes = TRUE, ...) {
|
1d4d6914 |
isTip <- NULL
|
6c9cd355 |
self_mapping <- aes(subset = !isTip)
if (is.null(mapping)) {
mapping <- self_mapping
} else {
mapping %<>% modifyList(self_mapping)
}
|
102483c0 |
geom_point2(mapping, data, position, na.rm, show.legend, inherit.aes, ...)
|
1d4d6914 |
}
##' add root point
##'
|
102483c0 |
##'
|
1d4d6914 |
##' @title geom_rootpoint
|
6c9cd355 |
##' @inheritParams geom_point2
|
1d4d6914 |
##' @return root point layer
##' @export
##' @author Guangchuang Yu
|
102483c0 |
geom_rootpoint <- function(mapping = NULL, data = NULL,
|
6c9cd355 |
position = "identity", na.rm = FALSE,
show.legend = NA, inherit.aes = TRUE, ...) {
|
1d4d6914 |
isTip <- node <- parent <- NULL
|
6c9cd355 |
self_mapping <- aes(subset = (node == parent))
if (is.null(mapping)) {
mapping <- self_mapping
} else {
mapping %<>% modifyList(self_mapping)
}
|
7d9641c6 |
geom_point2(mapping, data, position, na.rm, show.legend, inherit.aes, ...)
|
1d4d6914 |
}
|
6c9cd355 |
##' geom_point2 support aes(subset) via setup_data
##'
|
102483c0 |
##'
|
6c9cd355 |
##' @title geom_point2
##' @param mapping aes mapping
##' @param data data
##' @param position position
##' @param na.rm logical
##' @param show.legend logical
##' @param inherit.aes logical
##' @param ... addktional parameter
##' @importFrom ggplot2 layer
##' @export
##' @seealso
##' \link[ggplot2]{geom_point}
##' @return point layer
##' @author Guangchuang Yu
|
7d9641c6 |
geom_point2 <- function(mapping = NULL, data = NULL,
|
6c9cd355 |
position = "identity", na.rm = FALSE,
show.legend = NA, inherit.aes = TRUE, ...) {
|
e4ea056a |
|
102483c0 |
|
e4ea056a |
default_aes <- aes_(node=~node)
if (is.null(mapping)) {
mapping <- default_aes
} else {
mapping <- modifyList(mapping, default_aes)
}
|
102483c0 |
|
e4ea056a |
layer(
data = data,
mapping = mapping,
|
7d9641c6 |
stat = StatTreeData,
|
e4ea056a |
geom = GeomPointGGtree,
position = position,
show.legend = show.legend,
inherit.aes = inherit.aes,
params = list(
na.rm = na.rm,
...
|
bedefde1 |
),
|
da0f0f7f |
if (packageVersion('ggplot2') > '2.1.0') check.aes = FALSE
|
6c9cd355 |
)
}
##' @importFrom ggplot2 ggproto
##' @importFrom ggplot2 GeomPoint
##' @importFrom ggplot2 draw_key_point
GeomPointGGtree <- ggproto("GeomPointGGtree", GeomPoint,
setup_data = function(data, params) {
|
e4ea056a |
if (is.null(data$subset))
return(data)
|
6c9cd355 |
data[data$subset,]
|
102483c0 |
}
## ,
|
e4ea056a |
## draw_panel = function(data, panel_scales, coord, na.rm = FALSE){
## GeomPoint$draw_panel(data, panel_scales, coord, na.rm)
## },
|
102483c0 |
|
e4ea056a |
## draw_key = draw_key_point,
|
102483c0 |
|
e4ea056a |
## required_aes = c("x", "y"),
## default_aes = aes(shape = 19, colour = "black", size = 1.5, fill = NA,
## alpha = NA, stroke = 0.5)
|
6c9cd355 |
)
|
e4ea056a |
|