Nothing
#' @importFrom dplyr tibble
.plot_bivariate <- function(out, title=title, xlab=xlab, ylab=ylab, fan,
feature){
if (is.null(title)) {
title <- paste("Bivariate plot", feature)
}
if (is.null(xlab)) {
xlab <- "x"
}
if (is.null(ylab)) {
ylab <- "y"
}
xx <- paste0(feature, "_mean")
if(fan){
yy <- paste0(feature, "_cv")
g1 <- ggplot(out, aes_string("x", "y")) +
geom_hex(stat = "identity", fill = out$bi_color) +
theme_classic() + ggtitle(title) +
labs(x = xlab, y = ylab) + theme(legend.title = element_blank())
dat <- .colourfan_grob(nrow=4, ncol=8)
id <- rep(seq(1,(4*8)), each = 22)
label.x.pos <- dat[dat$x==min(dat$x),]
label.y.pos <- dat[dat$y==min(dat$y),]
label.x.pos <- .transform_radial(tibble(x = seq(0,1,1/4), y = 1),
yoff = 0.08)
label.y.pos <- .transform_radial(tibble(x = 0, y = seq(0,1,1/4)),
xoff = -0.3, yoff=-0.2)
label.x <- round(seq(1,max(out[[xx]], na.rm=TRUE), length.out = 5), 2)
colours_fun <- .bivariate_colour_scheme(fan)[,2]
grid.newpage()
pushViewport(viewport(width = 0.65, height = 1,
x = 0, y = 0, just = c("left", "bottom")))
grid.draw(ggplotGrob(g1))
popViewport()
pushViewport(viewport(width = 0.25, height = 0.275,
x = 0.725, y = 0.65, just = c("left", "bottom")))
grid.draw(polygonGrob(dat$x, dat$y, id, gp = gpar(fill = colours_fun,
col = colours_fun, lwd = 1, lty = 1)))
grid.draw(textGrob(label.x, label.x.pos$x, label.x.pos$y,
gp=gpar(cex=0.75)))
grid.draw(textGrob(c(">100%", "75%", "50%", "25%", "0%"),
label.y.pos$x, label.y.pos$y, gp=gpar(cex=0.75)))
popViewport()
pushViewport(viewport(x = 0.78, y = 0.75,
width = 0.2, height = 0.02))
grid.draw(textGrob("uncertainty", 0.1, 0.1, rot = 300,
gp = gpar(cex = 0.75)))
popViewport()
pushViewport(viewport(x = 0.855, y = 0.6,
width = 0.2, height = 0.02))
grid.draw(textGrob("expression", 0.5, 0.2, gp = gpar(cex = 0.75)))
popViewport()
} else {
yy <- paste0(feature, "_sd")
dat_leg <- data.frame(y = rep(seq(1,4), 4), x = rep(seq(1,4), each=4),
col = .bivariate_colour_scheme(fan)[,2])
breaks_x <- seq(0, max(out[[xx]], na.rm=TRUE), length.out=5)
new_x <- vapply(seq_len(length(breaks_x)-1), function(xxx)
(breaks_x[xxx] + breaks_x[xxx+1])/2, double(1))
breaks_y <- seq(0, max(out[[yy]], na.rm=TRUE), length.out=5)
new_y <- vapply(seq_len(length(breaks_y)-1), function(xxx)
(breaks_y[xxx] + breaks_y[xxx + 1])/2, double(1))
dat_leg$y <- new_y[dat_leg$y]
dat_leg$x <- new_x[dat_leg$x]
gl <- ggplot(dat_leg, aes(x = x, y = y)) + geom_tile(stat = "identity",
fill=dat_leg$col) + theme_classic() +
scale_x_continuous(limits = c(breaks_x[1], breaks_x[5]),
expand = c(0, 0), breaks = round(breaks_x,3)) +
scale_y_continuous(limits = c(breaks_y[1], breaks_y[5]),
expand = c(0, 0), breaks=round(breaks_y,3)) +
theme(plot.margin = margin(0, 0, 0, 0, "cm"),
axis.text.x = element_text(angle = 45, hjust = 1),
axis.title = element_blank())
g1 <- ggplot(out, aes_string("x", "y")) +
geom_hex(stat = "identity", fill = out$bi_color) +
theme_classic() + ggtitle(title) +
labs(x = xlab, y = ylab) + theme(legend.title = element_blank())
grid.newpage()
pushViewport(viewport(x = 0, y = 0, width = 0.75, height = 1,
just = c("left", "bottom")))
grid.draw(ggplotGrob(g1))
popViewport()
pushViewport(viewport(x = 0.875, y = 0.8, width = 0.2, height = 0.225))
grid.draw(ggplotGrob(gl))
popViewport()
pushViewport(viewport(x = 0.9, y = 0.685,
width = 0.2, height = 0.02))
grid.draw(textGrob("mean expression", 0.5, 0.2, gp = gpar(cex = 0.75)))
popViewport()
pushViewport(viewport(x = 0.84, y = 0.8,
width = 0.2, height = 0.02))
grid.draw(textGrob("standard deviation", 0.1, 0.1, rot=90,
gp = gpar(cex = 0.75)))
popViewport()
}
}
.transform_radial <- function(data, xoff = 0, yoff = 0) {
phi <- (data$x * 60 - 30)*(pi/180)
Y <- (data$y + yoff) * cos(phi) - xoff * sin(60*pi/360)
X <- (data$y + yoff) * sin(phi) + 0.5 + xoff * cos(60*pi/360)
tibble(x = X, y = Y)
}
.colourfan_grob <- function(nrow, ncol, nmunch = 10) {
dx <- 1 / ncol
dy <- 1 / nrow
x <- rep((seq(0, (ncol-1)))/ncol, nrow)
y <- rep((seq((nrow-1),0))/nrow, each = ncol)
x <- unlist(lapply(x, function(x) c(x+dx*(seq(0,nmunch))/nmunch,
x+dx*(seq(nmunch,0))/nmunch)))
y <- unlist(lapply(y, function(y) c(rep(y, nmunch + 1),
rep(y+dy, nmunch + 1))))
data <- .transform_radial(tibble(x, y))
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.