Uh oh!
There was an error while loading. Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork 641
Toby rect#178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Uh oh!
There was an error while loading. Please reload this page.
Toby rect #178
Changes from all commits
e97ee3a0a208f5214c376b0878aea16b6af7b39c3e787596f426d89b52827b68dcd324e97741680b13128b03e90870e5f88ac051849d027aa413a8e10c8bccFile filter
Filter by extension
Conversations
Uh oh!
There was an error while loading. Please reload this page.
Jump to
Uh oh!
There was an error while loading. Please reload this page.
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,7 @@ | ||
| 0.5.26 -- 18 Mar 2015 | ||
| Implemented geom_rect #178 | ||
| 0.5.25 -- 10 March 2015 | ||
| Implemented geom_smooth() #183 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -322,14 +322,18 @@ toBasic <- list( | ||
| }) | ||
| group2NA(g, "path") | ||
| }, | ||
| polygon=function(g){ | ||
| if(is.null(g$params$fill)){ | ||
| g | ||
| }else if(is.na(g$params$fill)){ | ||
| group2NA(g, "path") | ||
| }else{ | ||
| g | ||
| } | ||
| rect=function(g){ | ||
| g$data$group <- 1:nrow(g$data) | ||
| used <- c("xmin", "ymin", "xmax", "ymax") | ||
| others <- g$data[!names(g$data) %in% used] | ||
| g$data <- with(g$data, { | ||
| rbind(cbind(x=xmin, y=ymin, others), | ||
| cbind(x=xmin, y=ymax, others), | ||
| cbind(x=xmax, y=ymax, others), | ||
| cbind(x=xmax, y=ymin, others)) | ||
| }) | ||
| g$geom <- "polygon" | ||
| g | ||
| }, | ||
ContributorAuthor There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. geom_rect is converted to a basic geom "polygon" | ||
| path=function(g) { | ||
| group2NA(g, "path") | ||
| @@ -411,7 +415,6 @@ toBasic <- list( | ||
| } | ||
| ) | ||
| #' Drawing ggplot2 geoms with a group aesthetic is most efficient in | ||
| #' plotly when we convert groups of things that look the same to | ||
| #' vectors with NA. | ||
| @@ -421,16 +424,41 @@ toBasic <- list( | ||
| #' @return list of geom info. | ||
| #' @author Toby Dylan Hocking | ||
| group2NA <- function(g, geom) { | ||
| poly.list <- split(g$data, g$data$group) | ||
| poly.list <- split(g$data, g$data$group, drop=TRUE) | ||
| is.group <- names(g$data) == "group" | ||
| poly.na.df <- data.frame() | ||
| for (i in seq_along(poly.list)) { | ||
| poly.na.list <- list() | ||
| forward.i <- seq_along(poly.list) | ||
| ## When group2NA is called on geom_polygon (or geom_rect, which is | ||
| ## treated as a basic polygon), we need to retrace the first points | ||
| ## of each group, see https://github.com/ropensci/plotly/pull/178 | ||
| retrace.first.points <- g$geom == "polygon" | ||
| for (i in forward.i) { | ||
| no.group <- poly.list[[i]][, !is.group, drop=FALSE] | ||
| na.row <- no.group[1, ] | ||
| na.row[, c("x", "y")] <- NA | ||
| poly.na.df <- rbind(poly.na.df, no.group, na.row) | ||
| retrace.first <- if(retrace.first.points){ | ||
| no.group[1,] | ||
| } | ||
| poly.na.list[[paste(i, "forward")]] <- | ||
| rbind(no.group, retrace.first, na.row) | ||
| } | ||
| if(retrace.first.points){ | ||
| backward.i <- rev(forward.i[-1])[-1] | ||
| for(i in backward.i){ | ||
| no.group <- poly.list[[i]][1, !is.group, drop=FALSE] | ||
| na.row <- no.group[1, ] | ||
| na.row[, c("x", "y")] <- NA | ||
| poly.na.list[[paste(i, "backward")]] <- rbind(no.group, na.row) | ||
| } | ||
| if(length(poly.list) > 1){ | ||
| first.group <- poly.list[[1]][1, !is.group, drop=FALSE] | ||
| poly.na.list[["last"]] <- rbind(first.group, first.group) | ||
| } | ||
| } | ||
| g$data <- do.call(rbind, poly.na.list) | ||
| if(is.na(g$data$x[nrow(g$data)])){ | ||
| g$data <- g$data[-nrow(g$data), ] | ||
| } | ||
| g$data <- poly.na.df | ||
| g$geom <- geom | ||
| g | ||
| } | ||
| @@ -477,10 +505,12 @@ geom2trace <- list( | ||
| line=paramORdefault(params, aes2line, line.defaults)) | ||
| }, | ||
| polygon=function(data, params){ | ||
| list(x=c(data$x, data$x[1]), | ||
| y=c(data$y, data$y[1]), | ||
| g <- list(data=data, geom="polygon") | ||
| g <- group2NA(g, "polygon") | ||
| list(x=g$data$x, | ||
| y=g$data$y, | ||
| name=params$name, | ||
| text=data$text, | ||
| text=g$data$text, | ||
| type="scatter", | ||
| mode="lines", | ||
| line=paramORdefault(params, aes2line, polygon.line.defaults), | ||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
geom_polygons are now treated as a basic type so this code is no longer necessary