bb_aes()
for aesthetic mapping, that equivalents to
ggplot2::aes()
.
p2 <- p + bb_point() + bb_lm(bb_aes(group=cyl), lwd=2)
p3 <- p2 + bb_lm(col="red", lwd=3, lty='dotted')
p4 <- p + bb_text(bb_aes(label=cyl), cex=2)
## oldpar <- par()$mfrow
## par(mfrow=c(1,3))
## p2; p3; p4
## par(mfrow=oldpar)
aplot::plot_list(p2, p3, p4, ncol=3, tag_levels = 'A')
df <- data.frame(x = rep(1:10, 12),
y = rep(1:12, each = 10),
values = rnorm(120, mean = 10, sd = 5),
type = sample(LETTERS[1:5], 120, replace=TRUE),
stringsAsFactors = FALSE)
h1 <- bbplot(df, bb_aes(x,y, col=values)) + bb_tile() +
bb_title("heatmap for continuous numerical values")
h2 <- bbplot(df, bb_aes(x,y, col=values)) + bb_tile() + bb_scale_col_palette("YlOrRd") +
bb_title("applying a color palette")
h3 <- bbplot(df, bb_aes(x,y, col=type)) + bb_tile() +
bb_title("heatmap for discrete categorical values")
h4 <- bbplot(df, bb_aes(x,y, col=values)) + bb_tile() + bb_text(col='black') +
bb_title("heatmap with text labels") + bb_theme_expand()
aplot::plot_list(h1, h2, h3, h4, ncol=2, tag_levels = 'A')
g <- p2 +
bb_theme(col.main="red", cex.main=2,
mar = c(4, 4, 3, 1)) +
bb_title("applying graphics::par")
g2 <- p2 + bb_title("theme has no side effect")
aplot::plot_list(g, g2, ncol=2, tag_levels = 'A')
bb_theme
has no side effect and will only apply to the
bbplot
object that it added to. This is very important for
developing pre-defined themes.
Not yet implemented
Suppose we have existing code to plot something:
We can wrap the codes into a function:
Then we can convert it to a bbplot
object. The plot
produced by the function will be used as the canvas, and we can apply
theme and add layers to it:
library(dplyr)
d <- group_by(mtcars, cyl) %>%
summarize(xm=mean(mpg), ym=mean(disp))
pp <- as.bbplot(f) +
bb_theme_expand() +
bb_theme_grey() +
bb_lm(bb_aes(mpg, disp, group=cyl, col=factor(cyl)), data=mtcars, lwd=2, lty='dashed') +
bb_point(bb_aes(xm, ym, col=factor(cyl)), data=d, pch=19, cex=2) +
bb_title("hello plotbb") +
bb_grid(col='grey30', lty='dashed') ## grid lines were plotted as background by default
As there are many features currently not available,
plotbb
supports adding layers using base graphics commands
that you are already familiar with. Any base graphics commands in
formula, expression or function can be served as layer to be added to a
bbplot
object.
pp + (~points(30, 400, pch=19, col="red", cex=3)) +
~text(30, 420, label="hae fun :)", col="blue", cex=1.2)
Here is another example to use plotbb
with the
ape
package to visualize phylogenetic tree.
require(ape)
set.seed(2020-09-10)
x = rtree(10)
p = as.bbplot(
function()
plot(x, cex=2, edge.width=2,
edge.color="white", tip.color='purple')
)
p + bb_theme_expand() + bb_theme_deepblue() +
(~nodelabels(node = 14, pie = matrix(rep(1, 4), 1), cex = 2)) +
(~nodelabels(node = 15, pie = matrix(rep(1, 3), 1), cex = 2)) +
(~nodelabels(node = 18, pie = matrix(rep(1, 5), 1), cex = 2)) +
bb_labs(title = 'phylogenetic tree plotted by base graphics') +
bb_theme(col.main = "firebrick", cex.main=2)