# NOT RUN {
x <- matrix(sample(c(FALSE, TRUE), 300, rep = TRUE), ncol = 10,
dimnames = list(1:30, LETTERS[1:10]))
# Matrix for logical values. TRUE values are dark and no color key is shown. There are too many
# Row labels (>25) so they are suppressed.
pimage(x)
# Show all labels and flip axes or reverse columns
pimage(x, row_labels = TRUE, col_labels = TRUE, flip_axes = TRUE)
pimage(x, row_labels = TRUE, col_labels = TRUE, reverse_columns = TRUE)
# Reorder matrix, use custom colors, and add a title.
pimage(x, order = seriate(x), row_labels = TRUE, col_labels = TRUE,
col = c("white", "red"), main = "Random Data (Reordered)")
# Show a reordered distance matrix (distances between rows).
# Dark means low distance. The aspect ratio is automatically fixed to 1:1.
# The upper triangle is suppressed triangle
d <- dist(x, method = "binary")
pimage(d, order = seriate(d),
main = "Random Data (Distances)")
# Show only distances that are smaller than .5 using limits on z.
pimage(d, order = seriate(d),
main = "Random Data (Distances + Theshold)", zlim = c(0, .5))
# Add to the plot using functions in package grid
library("grid")
pimage(x, pop = FALSE) ### pop = FALSE allows us to manipulate viewports
downViewport(name = "image")
# Highlight cell column 7 (G) / row 5 (from top)/col with a red arrow starting at 5/2
# Note: columns are x and rows are y.
grid.lines(x = c(5, 7), y = c(2, 5), arrow = arrow(),
default.units = "native", gp = gpar(col = "red", lwd = 3))
# add a red box around rows 15 and 16
grid.rect(x = 0.5, y = 15.5, width = ncol(x), height = 2,
just = "left",
default.units = "native", gp = gpar(col = "red", lwd = 3, fill = NA))
## remove the viewports
popViewport(0)
## put several pimages on a page (uses viewports and newpage = FALSE)
library(grid)
grid.newpage()
pushViewport(viewport(layout = grid.layout(nrow = 1, ncol = 2,
widths = unit(c(.4, .6), unit = "npc"))))
pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 1))
## seriate matrix
o <- seriate(x)
pimage(x, o, labCol = FALSE, main = "Random Data",
newpage = FALSE)
upViewport(1)
pushViewport(viewport(layout.pos.row = 1, layout.pos.col = 2))
## add the reordered dissimilarity matrix for rows
d <- dist(x)
pimage(d, o[[1]], main = "Distances",
newpage = FALSE)
upViewport(1)
popViewport(0)
## ggplot2 Examples
if (require("ggplot2")) {
x <- matrix(sample(c(FALSE, TRUE), 300, rep = TRUE), ncol = 10,
dimnames = list(1:30, LETTERS[1:10]))
# Matrix for logical values. TRUE values are dark. There are too many
# Row labels (>25) so they are suppressed.
ggpimage(x)
# Show all labels and flip axes or reverse columns
ggpimage(x, flip_axes = TRUE, row_labels = TRUE, col_labels = TRUE)
ggpimage(x, reverse_columns = TRUE, row_labels = TRUE, col_labels = TRUE)
# Add lines
ggpimage(x) +
geom_hline(yintercept = seq(0, nrow(x)) + .5) +
geom_vline(xintercept = seq(0, ncol(x)) + .5)
# Reorder matrix, use custom colors, add a title,
# and hide colorkey.
ggpimage(x, order = seriate(x), row_labels = TRUE, col_labels = TRUE) +
scale_fill_manual(values = c("grey90", "red")) +
theme(legend.position = "none") +
labs(title = "Random Data")
# Show a reordered distance matrix (distances between rows).
# Dark means low distance.
d <- dist(x, method = "binary")
ggpimage(d, order = seriate(d)) +
labs(title = "Random Data", subtitle = "Distances")
# Show also upper triangle
ggpimage(d, order = seriate(d), upper_tri = TRUE) +
labs(title = "Random Data", subtitle = "Distances")
# Show only distances that are smaller than .5 using limits on fill.
ggpimage(d, order = seriate(d)) +
labs(title = "Random Data (Distances + Theshold)") +
scale_fill_gradient(low = "darkblue", high = "lightgray",
limit = c(0, .5), na.value = "white")
# Use ggplot2 themes with theme_set
old_theme <- theme_set(theme_linedraw())
ggpimage(d, order = seriate(d)) +
labs(title = "Random Data (Distances)")
theme_set(old_theme)
# Use custom color palettes: Gray scale, Colorbrewer (provided in ggplot2) and colorspace
ggpimage(d, order = seriate(d), upper_tri = FALSE) +
scale_fill_gradient(low = "black", high = "white", na.value = "white")
ggpimage(d, order = seriate(d), upper_tri = FALSE) +
scale_fill_distiller(palette = "Spectral", direction = +1, na.value = "white")
ggpimage(d, order = seriate(d), upper_tri = FALSE) +
colorspace::scale_fill_continuous_sequential("Reds", rev = FALSE, na.value = "white")
}
# }
Run the code above in your browser using DataLab