Date: 2026-04-28

# Introduction to derfinderPlot

Leonardo Collado-Torres1,2*

1Lieber Institute for Brain Development, Johns Hopkins Medical Campus
2Center for Computational Biology, Johns Hopkins University

*lcolladotor@gmail.com

#### 28 April 2026

#### Package

derfinderPlot 1.46.0

# 1 Basics

## 1.1 Install derfinderPlot

`R` is an open-source statistical environment which can be easily modified to enhance its functionality via packages. derfinderPlot is a `R` package available via the Bioconductor repository for packages. `R` can be installed on any operating system from CRAN after which you can install derfinderPlot by using the following commands in your `R` session:

    if (!requireNamespace("BiocManager", quietly = TRUE)) {
        install.packages("BiocManager")
    }

    BiocManager::install("derfinderPlot")

    ## Check that you have a valid Bioconductor installation
    BiocManager::valid()

## 1.2 Required knowledge

derfinderPlot is based on many other packages and in particular in those that have implemented the infrastructure needed for dealing with RNA-seq data. A derfinderPlot user is not expected to deal with those packages directly but will need to be familiar with derfinder and for some plots with ggbio.

If you are asking yourself the question “Where do I start using Bioconductor?” you might be interested in this blog post.

## 1.3 Asking for help

As package developers, we try to explain clearly how to use our packages and in which order to use the functions. But `R` and `Bioconductor` have a steep learning curve so it is critical to learn where to ask for help. The blog post quoted above mentions some but we would like to highlight the Bioconductor support site as the main resource for getting help: remember to use the `derfinder` or `derfinderPlot` tags and check the older posts. Other alternatives are available such as creating GitHub issues and tweeting. However, please note that if you want to receive help you should adhere to the posting guidelines. It is particularly critical that you provide a small reproducible example and your session information so package developers can track down the source of the error.

## 1.4 Citing derfinderPlot

We hope that derfinderPlot will be useful for your research. Please use the following information to cite the package and the overall approach. Thank you!

    ## Citation info
    citation("derfinderPlot")

    ## To cite package 'derfinderPlot' in publications use:
    ##
    ##   Collado-Torres L, Jaffe AE, Leek JT (2017). _derfinderPlot: Plotting
    ##   functions for derfinder_. doi:10.18129/B9.bioc.derfinderPlot
    ##   <https://doi.org/10.18129/B9.bioc.derfinderPlot>.
    ##   https://github.com/leekgroup/derfinderPlot - R package version
    ##   1.46.0, <http://www.bioconductor.org/packages/derfinderPlot>.
    ##
    ##   Collado-Torres L, Nellore A, Frazee AC, Wilks C, Love MI, Langmead B,
    ##   Irizarry RA, Leek JT, Jaffe AE (2017). "Flexible expressed region
    ##   analysis for RNA-seq with derfinder." _Nucl. Acids Res._.
    ##   doi:10.1093/nar/gkw852 <https://doi.org/10.1093/nar/gkw852>.
    ##   <http://nar.oxfordjournals.org/content/early/2016/09/29/nar.gkw852>.
    ##
    ## To see these entries in BibTeX format, use 'print(<citation>,
    ## bibtex=TRUE)', 'toBibtex(.)', or set
    ## 'options(citation.bibtex.max=999)'.

# 2 Introduction to derfinderPlot

derfinderPlot (Collado-Torres, Jaffe, and Leek, 2017) is an addon package for derfinder (Collado-Torres, Nellore, Frazee, Wilks, Love, Langmead, Irizarry, Leek, and Jaffe, 2017) with functions that allow you to visualize the results.

While the functions in derfinderPlot assume you generated the data with derfinder, they can be used with other `GRanges` objects properly formatted.

The functions in derfinderPlot are:

- `plotCluster()` is a tailored ggbio (Yin, Cook, and Lawrence, 2012) plot that shows all the regions in a cluster (defined by distance). It shows the base-level coverage for each sample as well as the mean for each group. If these regions overlap any known gene, the gene and the transcript annotation is displayed.
- `plotOverview()` is another tailored ggbio (Yin, Cook, and Lawrence, 2012) plot showing an overview of the whole genome. This plot can be useful to observe if the regions are clustered in a subset of a chromosome. It can also be used to check whether the regions match predominantly one part of the gene structure (for example, 3’ overlaps).
- `plotRegionCoverage()` is a fast plotting function using `R` base graphics that shows the base-level coverage for each sample inside a specific region of the genome. If the region overlaps any known gene or intron, the information is displayed. Optionally, it can display the known transcripts. This function is most likely the easiest to use with `GRanges` objects from other packages.

# 3 Example

As an example, we will analyze a small subset of the samples from the BrainSpan Atlas of the Human Brain (BrainSpan, 2011) publicly available data.

We first load the required packages.

    ## Load libraries
    suppressPackageStartupMessages(library("derfinder"))
    library("derfinderData")
    library("derfinderPlot")

## 3.1 Analyze data

For this example, we created a small table with the relevant phenotype data for 12 samples: 6 from fetal samples and 6 from adult samples. We chose at random a brain region, in this case the primary auditory cortex (core) and for the example we will only look at data from chromosome 21. Other variables include the age in years and the gender. The data is shown below.

    library("knitr")
    ## Get pheno table
    pheno <- subset(brainspanPheno, structure_acronym == "A1C")

    ## Display the main information
    p <- pheno[, -which(colnames(pheno) %in% c(
        "structure_acronym",
        "structure_name", "file"
    ))]
    rownames(p) <- NULL
    kable(p, format = "html", row.names = TRUE)

| gender | lab | Age | group
--- | --- | --- | --- | ---
1 | M | HSB114.A1C | -0.5192308 | fetal
2 | M | HSB103.A1C | -0.5192308 | fetal
3 | M | HSB178.A1C | -0.4615385 | fetal
4 | M | HSB154.A1C | -0.4615385 | fetal
5 | F | HSB150.A1C | -0.5384615 | fetal
6 | F | HSB149.A1C | -0.5192308 | fetal
7 | F | HSB130.A1C | 21.0000000 | adult
8 | M | HSB136.A1C | 23.0000000 | adult
9 | F | HSB126.A1C | 30.0000000 | adult
10 | M | HSB145.A1C | 36.0000000 | adult
11 | M | HSB123.A1C | 37.0000000 | adult
12 | F | HSB135.A1C | 40.0000000 | adult

We can load the data from derfinderData (Collado-Torres, Jaffe, and Leek, 2026) by first identifying the paths to the BigWig files with `derfinder::rawFiles()` and then loading the data with `derfinder::fullCoverage()`.

    ## Determine the files to use and fix the names
    files <- rawFiles(system.file("extdata", "A1C", package = "derfinderData"),
        samplepatt = "bw", fileterm = NULL
    )
    names(files) <- gsub(".bw", "", names(files))

    ## Load the data from disk
    system.time(fullCov <- fullCoverage(files = files, chrs = "chr21"))

    ## 2026-04-28 17:43:07.793911 fullCoverage: processing chromosome chr21

    ## 2026-04-28 17:43:07.813328 loadCoverage: finding chromosome lengths

    ## 2026-04-28 17:43:07.847279 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB103.bw

    ## 2026-04-28 17:43:08.087577 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB114.bw

    ## 2026-04-28 17:43:08.291914 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB123.bw

    ## 2026-04-28 17:43:08.447428 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB126.bw

    ## 2026-04-28 17:43:08.559313 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB130.bw

    ## 2026-04-28 17:43:08.722792 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB135.bw

    ## 2026-04-28 17:43:08.85266 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB136.bw

    ## 2026-04-28 17:43:08.978672 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB145.bw

    ## 2026-04-28 17:43:09.132075 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB149.bw

    ## 2026-04-28 17:43:09.272128 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB150.bw

    ## 2026-04-28 17:43:09.401718 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB154.bw

    ## 2026-04-28 17:43:09.558805 loadCoverage: loading BigWig file /home/biocbuild/bbs-3.23-bioc/R/site-library/derfinderData/extdata/A1C/HSB178.bw

    ## 2026-04-28 17:43:11.17412 loadCoverage: applying the cutoff to the merged data

    ## 2026-04-28 17:43:11.211918 filterData: originally there were 48129895 rows, now there are 48129895 rows. Meaning that 0 percent was filtered.

    ##    user  system elapsed
    ##   3.412   0.081   3.515

Alternatively, since the BigWig files are publicly available from BrainSpan (see here), we can extract the relevant coverage data using `derfinder::fullCoverage()`. Note that as of rtracklayer 1.25.16 BigWig files are not supported on Windows: you can find the `fullCov` object inside derfinderData to follow the examples.

    ## Determine the files to use and fix the names
    files <- pheno$file
    names(files) <- gsub(".A1C", "", pheno$lab)

    ## Load the data from the web
    system.time(fullCov <- fullCoverage(files = files, chrs = "chr21"))

Once we have the base-level coverage data for all 12 samples, we can construct the models. In this case, we want to find differences between fetal and adult samples while adjusting for gender and a proxy of the library size.

    ## Get some idea of the library sizes
    sampleDepths <- sampleDepth(collapseFullCoverage(fullCov), 1)

    ## 2026-04-28 17:43:11.406141 sampleDepth: Calculating sample quantiles

    ## 2026-04-28 17:43:11.547454 sampleDepth: Calculating sample adjustments

    ## Define models
    models <- makeModels(sampleDepths,
        testvars = pheno$group,
        adjustvars = pheno[, c("gender")]
    )

Next, we can find candidate differentially expressed regions (DERs) using as input the segments of the genome where at least one sample has coverage greater than 3. In this particular example, we chose a low theoretical F-statistic cutoff and used 20 permutations.

    ## Filter coverage
    filteredCov <- lapply(fullCov, filterData, cutoff = 3)

    ## 2026-04-28 17:43:11.931716 filterData: originally there were 48129895 rows, now there are 90023 rows. Meaning that 99.81 percent was filtered.

    ## Perform differential expression analysis
    suppressPackageStartupMessages(library("bumphunter"))
    system.time(results <- analyzeChr(
        chr = "chr21", filteredCov$chr21,
        models, groupInfo = pheno$group, writeOutput = FALSE,
        cutoffFstat = 5e-02, nPermute = 20, seeds = 20140923 + seq_len(20)
    ))

    ## 2026-04-28 17:43:13.767251 analyzeChr: Pre-processing the coverage data

    ## 2026-04-28 17:43:15.655881 analyzeChr: Calculating statistics

    ## 2026-04-28 17:43:15.666206 calculateStats: calculating the F-statistics

    ## 2026-04-28 17:43:15.916164 analyzeChr: Calculating pvalues

    ## 2026-04-28 17:43:15.917034 analyzeChr: Using the following theoretical cutoff for the F-statistics 5.31765507157871

    ## 2026-04-28 17:43:15.918795 calculatePvalues: identifying data segments

    ## 2026-04-28 17:43:15.929637 findRegions: segmenting information

    ## 2026-04-28 17:43:15.962765 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:16.026978 findRegions: identifying region clusters

    ## 2026-04-28 17:43:16.194003 calculatePvalues: calculating F-statistics for permutation 1 and seed 20140924

    ## 2026-04-28 17:43:16.354075 findRegions: segmenting information

    ## 2026-04-28 17:43:16.380458 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:16.445962 calculatePvalues: calculating F-statistics for permutation 2 and seed 20140925

    ## 2026-04-28 17:43:16.607185 findRegions: segmenting information

    ## 2026-04-28 17:43:16.633641 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:16.681445 calculatePvalues: calculating F-statistics for permutation 3 and seed 20140926

    ## 2026-04-28 17:43:16.842858 findRegions: segmenting information

    ## 2026-04-28 17:43:16.86913 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:16.916104 calculatePvalues: calculating F-statistics for permutation 4 and seed 20140927

    ## 2026-04-28 17:43:17.070285 findRegions: segmenting information

    ## 2026-04-28 17:43:17.106172 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:17.154292 calculatePvalues: calculating F-statistics for permutation 5 and seed 20140928

    ## 2026-04-28 17:43:17.30826 findRegions: segmenting information

    ## 2026-04-28 17:43:17.343235 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:17.389536 calculatePvalues: calculating F-statistics for permutation 6 and seed 20140929

    ## 2026-04-28 17:43:17.543193 findRegions: segmenting information

    ## 2026-04-28 17:43:17.578878 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:17.626098 calculatePvalues: calculating F-statistics for permutation 7 and seed 20140930

    ## 2026-04-28 17:43:17.790859 findRegions: segmenting information

    ## 2026-04-28 17:43:17.817184 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:17.865165 calculatePvalues: calculating F-statistics for permutation 8 and seed 20140931

    ## 2026-04-28 17:43:18.028071 findRegions: segmenting information

    ## 2026-04-28 17:43:18.054236 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:18.101907 calculatePvalues: calculating F-statistics for permutation 9 and seed 20140932

    ## 2026-04-28 17:43:18.26934 findRegions: segmenting information

    ## 2026-04-28 17:43:18.295837 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:18.342791 calculatePvalues: calculating F-statistics for permutation 10 and seed 20140933

    ## 2026-04-28 17:43:18.495146 findRegions: segmenting information

    ## 2026-04-28 17:43:18.521209 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:18.576528 calculatePvalues: calculating F-statistics for permutation 11 and seed 20140934

    ## 2026-04-28 17:43:18.728323 findRegions: segmenting information

    ## 2026-04-28 17:43:18.754755 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:18.802388 calculatePvalues: calculating F-statistics for permutation 12 and seed 20140935

    ## 2026-04-28 17:43:18.965997 findRegions: segmenting information

    ## 2026-04-28 17:43:18.992635 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:19.040787 calculatePvalues: calculating F-statistics for permutation 13 and seed 20140936

    ## 2026-04-28 17:43:19.208435 findRegions: segmenting information

    ## 2026-04-28 17:43:19.243669 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:19.291293 calculatePvalues: calculating F-statistics for permutation 14 and seed 20140937

    ## 2026-04-28 17:43:19.437665 findRegions: segmenting information

    ## 2026-04-28 17:43:19.464151 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:19.511169 calculatePvalues: calculating F-statistics for permutation 15 and seed 20140938

    ## 2026-04-28 17:43:19.674787 findRegions: segmenting information

    ## 2026-04-28 17:43:19.701103 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:19.74788 calculatePvalues: calculating F-statistics for permutation 16 and seed 20140939

    ## 2026-04-28 17:43:19.910322 findRegions: segmenting information

    ## 2026-04-28 17:43:19.937145 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:19.984411 calculatePvalues: calculating F-statistics for permutation 17 and seed 20140940

    ## 2026-04-28 17:43:20.141263 findRegions: segmenting information

    ## 2026-04-28 17:43:20.167853 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:20.215059 calculatePvalues: calculating F-statistics for permutation 18 and seed 20140941

    ## 2026-04-28 17:43:20.386911 findRegions: segmenting information

    ## 2026-04-28 17:43:20.413714 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:20.462656 calculatePvalues: calculating F-statistics for permutation 19 and seed 20140942

    ## 2026-04-28 17:43:21.671329 findRegions: segmenting information

    ## 2026-04-28 17:43:21.697647 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:21.745011 calculatePvalues: calculating F-statistics for permutation 20 and seed 20140943

    ## 2026-04-28 17:43:21.903107 findRegions: segmenting information

    ## 2026-04-28 17:43:21.930237 findRegions: identifying candidate regions

    ## 2026-04-28 17:43:22.004023 calculatePvalues: calculating the p-values

    ## 2026-04-28 17:43:22.082185 analyzeChr: Annotating regions

    ## No annotationPackage supplied. Trying org.Hs.eg.db.

    ## Loading required package: org.Hs.eg.db

    ## Loading required package: AnnotationDbi

    ## Loading required package: Biobase

    ## Welcome to Bioconductor
    ##
    ##     Vignettes contain introductory material; view with
    ##     'browseVignettes()'. To cite Bioconductor, see
    ##     'citation("Biobase")', and for packages 'citation("pkgname")'.

    ##

    ## Getting TSS and TSE.

    ## Getting CSS and CSE.

    ## Warning in .set_group_names(grl, use.names, txdb, by): some group names are NAs
    ## or duplicated

    ## Getting exons.

    ## Warning in .set_group_names(grl, use.names, txdb, by): some group names are NAs
    ## or duplicated

    ## Annotating genes.

    ## ...

    ##    user  system elapsed
    ##  71.936   1.684  73.636

    ## Quick access to the results
    regions <- results$regions$regions

    ## Annotation database to use
    suppressPackageStartupMessages(library("TxDb.Hsapiens.UCSC.hg19.knownGene"))
    txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene

## 3.2 `plotOverview()`

Now that we have obtained the main results using derfinder, we can proceed to visualizing the results using derfinderPlot. The easiest to use of all the functions is `plotOverview()` which takes a set of regions and annotation information produced by `bumphunter::matchGenes()`.

Figure 1 shows the candidate DERs colored by whether their q-value was less than 0.10 or not.

    ## Q-values overview
    plotOverview(regions = regions, annotation = results$annotation, type = "qval")

    ## 2026-04-28 17:44:27.585169 plotOverview: assigning chromosome lengths from hg19!

    ## Scale for x is already present.
    ## Adding another scale for x, which will replace the existing scale.
    ## Scale for x is already present.
    ## Adding another scale for x, which will replace the existing scale.

Figure 1: Location of the DERs in the genome
This plot is was designed for many chromosomes but only one is shown here for simplicity.

Figure 2 shows the candidate DERs colored by the type of gene feature they are nearest too.

    ## Annotation overview
    plotOverview(
        regions = regions, annotation = results$annotation,
        type = "annotation"
    )

    ## 2026-04-28 17:44:29.067424 plotOverview: assigning chromosome lengths from hg19!

    ## Scale for x is already present.
    ## Adding another scale for x, which will replace the existing scale.

Figure 2: Location of the DERs in the genome and colored by annotation class
This plot is was designed for many chromosomes but only one is shown here for simplicity.

In this particular example, because we are only using data from one chromosome the above plot is not as informative as in a real case scenario. However, with this plot we can quickly observe that nearly all of the candidate DERs are inside an exon.

## 3.3 `plotRegionCoverage()`

The complete opposite of visualizing the candidate DERs at the genome-level is to visualize them one region at a time. `plotRegionCoverage()` allows us to do this quickly for a large number of regions.

Before using this function, we need to process more detailed information using two derfinder functions: `annotateRegions()` and `getRegionCoverage()` as shown below.

    ## Get required information for the plots
    annoRegs <- annotateRegions(regions, genomicState$fullGenome)

    ## 2026-04-28 17:44:30.252943 annotateRegions: counting

    ## 2026-04-28 17:44:30.338972 annotateRegions: annotating

    regionCov <- getRegionCoverage(fullCov, regions)

    ## 2026-04-28 17:44:30.467324 getRegionCoverage: processing chr21

    ## 2026-04-28 17:44:30.533683 getRegionCoverage: done processing chr21

Once we have the relevant information we can proceed to plotting the first 10 regions. In this case, we will supply `plotRegionCoverage()` with the information it needs to plot transcripts overlapping these 10 regions (Figures ??, ??, ??, ??, ??, ??, ??, ??, ??, ??).

    ## Plot top 10 regions
    plotRegionCoverage(
        regions = regions, regionCoverage = regionCov,
        groupInfo = pheno$group, nearestAnnotation = results$annotation,
        annotatedRegions = annoRegs, whichRegions = 1:10, txdb = txdb, scalefac = 1,
        ask = FALSE, verbose = FALSE
    )

Figure 3: Base-pair resolution plot of differentially expressed region 1

Figure 4: Base-pair resolution plot of differentially expressed region 2

Figure 5: Base-pair resolution plot of differentially expressed region 3

Figure 6: Base-pair resolution plot of differentially expressed region 4

Figure 7: Base-pair resolution plot of differentially expressed region 5

Figure 8: Base-pair resolution plot of differentially expressed region 6

Figure 9: Base-pair resolution plot of differentially expressed region 7

Figure 10: Base-pair resolution plot of differentially expressed region 8

Figure 11: Base-pair resolution plot of differentially expressed region 9

Figure 12: Base-pair resolution plot of differentially expressed region 10

The base-level coverage is shown in a log2 scale with any overlapping exons shown in dark blue and known introns in light blue.

## 3.4 `plotCluster()`

In this example, we noticed with the `plotRegionCoverage()` plots that most of the candidate DERs are contained in known exons. Sometimes, the signal might be low or we might have used very stringent cutoffs in the derfinder analysis. One way we can observe this is by plotting clusters of regions where a cluster is defined as regions within 300 bp (default option) of each other.

To visualize the clusters, we can use `plotCluster()` which takes similar input to `plotOverview()` with the notable addition of the coverage information as well as the `idx` argument. This argument specifies which region to focus on: it will be plotted with a red bar and will determine the cluster to display.

In Figure 13 we observe one large candidate DER with other nearby ones that do not have a q-value less than 0.10. In a real analysis, we would probably discard this region as the coverage is fairly low.

    ## First cluster
    plotCluster(
        idx = 1, regions = regions, annotation = results$annotation,
        coverageInfo = fullCov$chr21, txdb = txdb, groupInfo = pheno$group,
        titleUse = "pval"
    )

    ## Parsing transcripts...

    ## Parsing exons...

    ## Parsing cds...

    ## Parsing utrs...

    ## ------exons...

    ## ------cdss...

    ## ------introns...

    ## ------utr...

    ## aggregating...

    ## Done

    ## Constructing graphics...

Figure 13: Cluster plot for cluster 1 using ggbio

The second cluster (Figure 14) shows a larger number of potential DERs (again without q-values less than 0.10) in a segment of the genome where the coverage data is highly variable. This is a common occurrence with RNA-seq data.

    ## Second cluster
    plotCluster(
        idx = 2, regions = regions, annotation = results$annotation,
        coverageInfo = fullCov$chr21, txdb = txdb, groupInfo = pheno$group,
        titleUse = "pval"
    )

    ## Parsing transcripts...

    ## Parsing exons...

    ## Parsing cds...

    ## Parsing utrs...

    ## ------exons...

    ## ------cdss...

    ## ------introns...

    ## ------utr...

    ## aggregating...

    ## Done

    ## Constructing graphics...

    ## Warning in !vapply(ggl, fixed, logical(1L)) & !vapply(PlotList, is, "Ideogram",
    ## : longer object length is not a multiple of shorter object length

    ## Warning in scale_y_continuous(trans = log2_trans()): log-2 transformation
    ## introduced infinite values.

Figure 14: Cluster plot for cluster 2 using ggbio

These plots show an ideogram which helps quickly identify which region of the genome we are focusing on. Then, the base-level coverage information for each sample is displayed in log2. Next, the coverage group means are shown in the log2 scale. The plot is completed with the potential and candidate DERs as well as any known transcripts.

## 3.5 `vennRegions`

derfinder has functions for annotating regions given their genomic state. A typical visualization is to then view how many regions overlap known exons, introns, intergenic regions, none of them or several of these groups in a venn diagram. The function `vennRegions()` makes this plot using the output from `derfinder::annotateRegions()` as shown in Figure 15.

    ## Make venn diagram
    venn <- vennRegions(annoRegs)

Figure 15: Venn diagram of regions by annotation class

    ## It returns the actual venn counts information
    venn

    ##   exon intergenic intron Counts
    ## 1    0          0      0      0
    ## 2    0          0      1      2
    ## 3    0          1      0      4
    ## 4    0          1      1      0
    ## 5    1          0      0    259
    ## 6    1          0      1     35
    ## 7    1          1      0      0
    ## 8    1          1      1      0
    ## attr(,"class")
    ## [1] "VennCounts"

# 4 Reproducibility

This package was made possible thanks to:

- R (R Core Team, 2026)
- GenomeInfoDb (Arora, Morgan, Carlson, and Pagès, 2017)
- GenomicRanges (Lawrence, Huber, Pagès, Aboyoun, Carlson, Gentleman, Morgan, and Carey, 2013)
- ggbio (Yin, Cook, and Lawrence, 2012)
- ggplot2 (Wickham, 2016)
- IRanges (Lawrence, Huber, Pagès et al., 2013)
- plyr (Wickham, 2011)
- RColorBrewer (Neuwirth, 2022)
- reshape2 (Wickham, 2007)
- scales (Wickham, Pedersen, and Seidel, 2025)
- biovizBase (Yin, Lawrence, and Cook, 2026)
- bumphunter (Jaffe, Murakami, Lee, Leek, Fallin, Feinberg, and Irizarry, 2012) and (Jaffe, Murakami, Lee, Leek, Fallin, Feinberg, and Irizarry, 2012)
- derfinder (Collado-Torres, Nellore, Frazee et al., 2017)
- derfinderData (Collado-Torres, Jaffe, and Leek, 2026)
- sessioninfo (Wickham, Chang, Flight, Müller, and Hester, 2025)
- knitr (Xie, 2014)
- BiocStyle (Oleś, 2026)
- RefManageR (McLean, 2017)
- rmarkdown (Allaire, Xie, Dervieux, McPherson, Luraschi, Ushey, Atkins, Wickham, Cheng, Chang, and Iannone, 2026)
- testthat (Wickham, 2011)
- TxDb.Hsapiens.UCSC.hg19.knownGene (Team and Maintainer, 2025)

Code for creating the vignette

    ## Create the vignette
    library("rmarkdown")
    system.time(render("derfinderPlot.Rmd", "BiocStyle::html_document"))

    ## Extract the R code
    library("knitr")
    knit("derfinderPlot.Rmd", tangle = TRUE)

    ## Clean up
    unlink("chr21", recursive = TRUE)

Date the vignette was generated.

    ## [1] "2026-04-28 17:45:13 EDT"

Wallclock time spent generating the vignette.

    ## Time difference of 2.393 mins

`R` session information.

    ## ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
    ##  setting  value
    ##  version  R version 4.6.0 RC (2026-04-17 r89917)
    ##  os       Ubuntu 24.04.4 LTS
    ##  system   x86_64, linux-gnu
    ##  ui       X11
    ##  language (EN)
    ##  collate  C
    ##  ctype    en_US.UTF-8
    ##  tz       America/New_York
    ##  date     2026-04-28
    ##  pandoc   2.7.3 @ /usr/bin/ (via rmarkdown)
    ##  quarto   1.8.25 @ /usr/local/bin/quarto
    ##
    ## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
    ##  package                           * version   date (UTC) lib source
    ##  abind                               1.4-8     2024-09-12 [2] CRAN (R 4.6.0)
    ##  AnnotationDbi                     * 1.74.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  AnnotationFilter                    1.36.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  backports                           1.5.1     2026-04-03 [2] CRAN (R 4.6.0)
    ##  base64enc                           0.1-6     2026-02-02 [2] CRAN (R 4.6.0)
    ##  bibtex                              0.5.2     2026-02-03 [2] CRAN (R 4.6.0)
    ##  Biobase                           * 2.72.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  BiocGenerics                      * 0.58.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  BiocIO                              1.22.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  BiocManager                         1.30.27   2025-11-14 [2] CRAN (R 4.6.0)
    ##  BiocParallel                        1.46.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  BiocStyle                         * 2.40.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  Biostrings                          2.80.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  biovizBase                          1.60.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  bit                                 4.6.0     2025-03-06 [2] CRAN (R 4.6.0)
    ##  bit64                               4.8.0     2026-04-21 [2] CRAN (R 4.6.0)
    ##  bitops                              1.0-9     2024-10-03 [2] CRAN (R 4.6.0)
    ##  blob                                1.3.0     2026-01-14 [2] CRAN (R 4.6.0)
    ##  bookdown                            0.46      2025-12-05 [2] CRAN (R 4.6.0)
    ##  BSgenome                            1.80.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  bslib                               0.10.0    2026-01-26 [2] CRAN (R 4.6.0)
    ##  bumphunter                        * 1.54.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  cachem                              1.1.0     2024-05-16 [2] CRAN (R 4.6.0)
    ##  checkmate                           2.3.4     2026-02-03 [2] CRAN (R 4.6.0)
    ##  cigarillo                           1.2.0     2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  cli                                 3.6.6     2026-04-09 [2] CRAN (R 4.6.0)
    ##  cluster                             2.1.8.2   2026-02-05 [3] CRAN (R 4.6.0)
    ##  codetools                           0.2-20    2024-03-31 [3] CRAN (R 4.6.0)
    ##  colorspace                          2.1-2     2025-09-22 [2] CRAN (R 4.6.0)
    ##  crayon                              1.5.3     2024-06-20 [2] CRAN (R 4.6.0)
    ##  curl                                7.1.0     2026-04-22 [2] CRAN (R 4.6.0)
    ##  data.table                          1.18.2.1  2026-01-27 [2] CRAN (R 4.6.0)
    ##  DBI                                 1.3.0     2026-02-25 [2] CRAN (R 4.6.0)
    ##  DelayedArray                        0.38.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  derfinder                         * 1.46.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  derfinderData                     * 2.29.0    2026-04-23 [2] Bioconductor 3.23 (R 4.6.0)
    ##  derfinderHelper                     1.46.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  derfinderPlot                     * 1.46.0    2026-04-28 [1] Bioconductor 3.23 (R 4.6.0)
    ##  dichromat                           2.0-0.1   2022-05-02 [2] CRAN (R 4.6.0)
    ##  digest                              0.6.39    2025-11-19 [2] CRAN (R 4.6.0)
    ##  doRNG                               1.8.6.3   2026-02-05 [2] CRAN (R 4.6.0)
    ##  dplyr                               1.2.1     2026-04-03 [2] CRAN (R 4.6.0)
    ##  ensembldb                           2.36.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  evaluate                            1.0.5     2025-08-27 [2] CRAN (R 4.6.0)
    ##  farver                              2.1.2     2024-05-13 [2] CRAN (R 4.6.0)
    ##  fastmap                             1.2.0     2024-05-15 [2] CRAN (R 4.6.0)
    ##  foreach                           * 1.5.2     2022-02-02 [2] CRAN (R 4.6.0)
    ##  foreign                             0.8-91    2026-01-29 [3] CRAN (R 4.6.0)
    ##  Formula                             1.2-5     2023-02-24 [2] CRAN (R 4.6.0)
    ##  generics                          * 0.1.4     2025-05-09 [2] CRAN (R 4.6.0)
    ##  GenomeInfoDb                        1.48.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  GenomicAlignments                   1.48.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  GenomicFeatures                   * 1.64.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  GenomicFiles                        1.48.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  GenomicRanges                     * 1.64.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  ggbio                               1.60.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  ggplot2                             4.0.3     2026-04-22 [2] CRAN (R 4.6.0)
    ##  glue                                1.8.1     2026-04-17 [2] CRAN (R 4.6.0)
    ##  graph                               1.90.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  gridExtra                           2.3       2017-09-09 [2] CRAN (R 4.6.0)
    ##  gtable                              0.3.6     2024-10-25 [2] CRAN (R 4.6.0)
    ##  Hmisc                               5.2-5     2026-01-09 [2] CRAN (R 4.6.0)
    ##  htmlTable                           2.5.0     2026-04-22 [2] CRAN (R 4.6.0)
    ##  htmltools                           0.5.9     2025-12-04 [2] CRAN (R 4.6.0)
    ##  htmlwidgets                         1.6.4     2023-12-06 [2] CRAN (R 4.6.0)
    ##  httr                                1.4.8     2026-02-13 [2] CRAN (R 4.6.0)
    ##  IRanges                           * 2.46.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  iterators                         * 1.0.14    2022-02-05 [2] CRAN (R 4.6.0)
    ##  jquerylib                           0.1.4     2021-04-26 [2] CRAN (R 4.6.0)
    ##  jsonlite                            2.0.0     2025-03-27 [2] CRAN (R 4.6.0)
    ##  KEGGREST                            1.52.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  knitr                             * 1.51      2025-12-20 [2] CRAN (R 4.6.0)
    ##  labeling                            0.4.3     2023-08-29 [2] CRAN (R 4.6.0)
    ##  lattice                             0.22-9    2026-02-09 [3] CRAN (R 4.6.0)
    ##  lazyeval                            0.2.3     2026-04-04 [2] CRAN (R 4.6.0)
    ##  lifecycle                           1.0.5     2026-01-08 [2] CRAN (R 4.6.0)
    ##  limma                               3.68.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  locfit                            * 1.5-9.12  2025-03-05 [2] CRAN (R 4.6.0)
    ##  lubridate                           1.9.5     2026-02-04 [2] CRAN (R 4.6.0)
    ##  magick                              2.9.1     2026-02-28 [2] CRAN (R 4.6.0)
    ##  magrittr                            2.0.5     2026-04-04 [2] CRAN (R 4.6.0)
    ##  Matrix                              1.7-5     2026-03-21 [3] CRAN (R 4.6.0)
    ##  MatrixGenerics                      1.24.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  matrixStats                         1.5.0     2025-01-07 [2] CRAN (R 4.6.0)
    ##  memoise                             2.0.1     2021-11-26 [2] CRAN (R 4.6.0)
    ##  nnet                                7.3-20    2025-01-01 [3] CRAN (R 4.6.0)
    ##  org.Hs.eg.db                      * 3.23.1    2026-04-20 [2] Bioconductor
    ##  OrganismDbi                         1.54.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  otel                                0.2.0     2025-08-29 [2] CRAN (R 4.6.0)
    ##  pillar                              1.11.1    2025-09-17 [2] CRAN (R 4.6.0)
    ##  pkgconfig                           2.0.3     2019-09-22 [2] CRAN (R 4.6.0)
    ##  plyr                                1.8.9     2023-10-02 [2] CRAN (R 4.6.0)
    ##  png                                 0.1-9     2026-03-15 [2] CRAN (R 4.6.0)
    ##  ProtGenerics                        1.44.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  qvalue                              2.44.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  R6                                  2.6.1     2025-02-15 [2] CRAN (R 4.6.0)
    ##  RBGL                                1.88.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  RColorBrewer                        1.1-3     2022-04-03 [2] CRAN (R 4.6.0)
    ##  Rcpp                                1.1.1-1.1 2026-04-24 [2] CRAN (R 4.6.0)
    ##  RCurl                               1.98-1.18 2026-03-21 [2] CRAN (R 4.6.0)
    ##  RefManageR                        * 1.4.0     2022-09-30 [2] CRAN (R 4.6.0)
    ##  reshape2                            1.4.5     2025-11-12 [2] CRAN (R 4.6.0)
    ##  restfulr                            0.0.16    2025-06-27 [2] CRAN (R 4.6.0)
    ##  rjson                               0.2.23    2024-09-16 [2] CRAN (R 4.6.0)
    ##  rlang                               1.2.0     2026-04-06 [2] CRAN (R 4.6.0)
    ##  rmarkdown                           2.31      2026-03-26 [2] CRAN (R 4.6.0)
    ##  rngtools                            1.5.2     2021-09-20 [2] CRAN (R 4.6.0)
    ##  rpart                               4.1.27    2026-03-27 [3] CRAN (R 4.6.0)
    ##  Rsamtools                           2.28.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  RSQLite                             2.4.6     2026-02-06 [2] CRAN (R 4.6.0)
    ##  rstudioapi                          0.18.0    2026-01-16 [2] CRAN (R 4.6.0)
    ##  rtracklayer                         1.72.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  S4Arrays                            1.12.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  S4Vectors                         * 0.50.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  S7                                  0.2.2     2026-04-22 [2] CRAN (R 4.6.0)
    ##  sass                                0.4.10    2025-04-11 [2] CRAN (R 4.6.0)
    ##  scales                              1.4.0     2025-04-24 [2] CRAN (R 4.6.0)
    ##  Seqinfo                           * 1.2.0     2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  sessioninfo                       * 1.2.3     2025-02-05 [2] CRAN (R 4.6.0)
    ##  SparseArray                         1.12.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  statmod                             1.5.1     2025-10-09 [2] CRAN (R 4.6.0)
    ##  stringi                             1.8.7     2025-03-27 [2] CRAN (R 4.6.0)
    ##  stringr                             1.6.0     2025-11-04 [2] CRAN (R 4.6.0)
    ##  SummarizedExperiment                1.42.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  tibble                              3.3.1     2026-01-11 [2] CRAN (R 4.6.0)
    ##  tidyselect                          1.2.1     2024-03-11 [2] CRAN (R 4.6.0)
    ##  timechange                          0.4.0     2026-01-29 [2] CRAN (R 4.6.0)
    ##  tinytex                             0.59      2026-03-28 [2] CRAN (R 4.6.0)
    ##  TxDb.Hsapiens.UCSC.hg19.knownGene * 3.22.1    2026-04-20 [2] Bioconductor
    ##  UCSC.utils                          1.8.0     2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  VariantAnnotation                   1.58.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  vctrs                               0.7.3     2026-04-11 [2] CRAN (R 4.6.0)
    ##  withr                               3.0.2     2024-10-28 [2] CRAN (R 4.6.0)
    ##  xfun                                0.57      2026-03-20 [2] CRAN (R 4.6.0)
    ##  XML                                 3.99-0.23 2026-03-20 [2] CRAN (R 4.6.0)
    ##  xml2                                1.5.2     2026-01-17 [2] CRAN (R 4.6.0)
    ##  XVector                             0.52.0    2026-04-28 [2] Bioconductor 3.23 (R 4.6.0)
    ##  yaml                                2.3.12    2025-12-10 [2] CRAN (R 4.6.0)
    ##
    ##  [1] /tmp/Rtmp9MZwKU/Rinste62fc7a37a342
    ##  [2] /home/biocbuild/bbs-3.23-bioc/R/site-library
    ##  [3] /home/biocbuild/bbs-3.23-bioc/R/library
    ##  * ── Packages attached to the search path.
    ##
    ## ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

# 5 Bibliography

This vignette was generated using BiocStyle (Oleś, 2026) with knitr (Xie, 2014) and rmarkdown (Allaire, Xie, Dervieux et al., 2026) running behind the scenes.

Citations made with RefManageR (McLean, 2017).

[1] J. Allaire, Y. Xie, C. Dervieux, et al. rmarkdown: Dynamic Documents for R. R package version 2.31. 2026. URL: https://github.com/rstudio/rmarkdown.

[2] S. Arora, M. Morgan, M. Carlson, et al. GenomeInfoDb: Utilities for manipulating chromosome and other ‘seqname’ identifiers. 2017. DOI: 10.18129/B9.bioc.GenomeInfoDb.

[3] BrainSpan. “Atlas of the Developing Human Brain [Internet]. Funded by ARRA Awards 1RC2MH089921-01, 1RC2MH090047-01, and 1RC2MH089929-01.” 2011. URL: http://www.brainspan.org/.

[4] L. Collado-Torres, A. E. Jaffe, and J. T. Leek. derfinderPlot: Plotting functions for derfinder. https://github.com/leekgroup/derfinderPlot - R package version 1.46.0. 2017. DOI: 10.18129/B9.bioc.derfinderPlot. URL: http://www.bioconductor.org/packages/derfinderPlot.

[5] L. Collado-Torres, A. Jaffe, and J. Leek. derfinderData: Processed BigWigs from BrainSpan for examples. R package version 2.29.0. 2026. DOI: 10.18129/B9.bioc.derfinderData. URL: https://bioconductor.org/packages/derfinderData.

[6] L. Collado-Torres, A. Nellore, A. C. Frazee, et al. “Flexible expressed region analysis for RNA-seq with derfinder”. In: Nucl. Acids Res. (2017). DOI: 10.1093/nar/gkw852. URL: http://nar.oxfordjournals.org/content/early/2016/09/29/nar.gkw852.

[7] A. E. Jaffe, P. Murakami, H. Lee, et al. “Bump hunting to identify differentially methylated regions in epigenetic epidemiology studies”. In: International journal of epidemiology 41.1 (2012), pp. 200–209. DOI: 10.1093/ije/dyr238.

[8] A. E. Jaffe, P. Murakami, H. Lee, et al. “Bump hunting to identify differentially methylated regions in epigenetic epidemiology studies”. In: International Journal of Epidemiology (2012).

[9] M. Lawrence, W. Huber, H. Pagès, et al. “Software for Computing and Annotating Genomic Ranges”. In: PLoS Computational Biology 9 (8 2013). DOI: 10.1371/journal.pcbi.1003118. URL: http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1003118}.

[10] M. W. McLean. “RefManageR: Import and Manage BibTeX and BibLaTeX References in R”. In: The Journal of Open Source Software (2017). DOI: 10.21105/joss.00338.

[11] E. Neuwirth. RColorBrewer: ColorBrewer Palettes. R package version 1.1-3. 2022. DOI: 10.32614/CRAN.package.RColorBrewer. URL: https://CRAN.R-project.org/package=RColorBrewer.

[12] A. Oleś. BiocStyle: Standard styles for vignettes and other Bioconductor documents. R package version 2.40.0. 2026. DOI: 10.18129/B9.bioc.BiocStyle. URL: https://bioconductor.org/packages/BiocStyle.

[13] R Core Team. R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing (ROR: <https://ror.org/05qewa988>;). Vienna, Austria, 2026. DOI: 10.32614/R.manuals. URL: https://www.R-project.org/.

[14] B. C. Team and B. P. Maintainer. TxDb.Hsapiens.UCSC.hg19.knownGene: Annotation package for TxDb object(s). R package version 3.22.1. 2025.

[15] H. Wickham. “Reshaping Data with the reshape Package”. In: Journal of Statistical Software 21.12 (2007), pp. 1–20. URL: https://www.jstatsoft.org/v21/i12/.

[16] H. Wickham. “The Split-Apply-Combine Strategy for Data Analysis”. In: Journal of Statistical Software 40.1 (2011), pp. 1–29. URL: https://www.jstatsoft.org/v40/i01/.

[17] H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016. ISBN: 978-3-319-24277-4. URL: https://ggplot2.tidyverse.org.

[18] H. Wickham. “testthat: Get Started with Testing”. In: The R Journal 3 (2011), pp. 5–10. URL: https://journal.r-project.org/articles/RJ-2011-002/.

[19] H. Wickham, W. Chang, R. Flight, et al. sessioninfo: R Session Information. R package version 1.2.3. 2025. DOI: 10.32614/CRAN.package.sessioninfo. URL: https://CRAN.R-project.org/package=sessioninfo.

[20] H. Wickham, T. Pedersen, and D. Seidel. scales: Scale Functions for Visualization. R package version 1.4.0. 2025. DOI: 10.32614/CRAN.package.scales. URL: https://CRAN.R-project.org/package=scales.

[21] Y. Xie. “knitr: A Comprehensive Tool for Reproducible Research in R”. In: Implementing Reproducible Computational Research. Ed. by V. Stodden, F. Leisch and R. D. Peng. ISBN 978-1466561595. Chapman and Hall/CRC, 2014.

[22] T. Yin, D. Cook, and M. Lawrence. “ggbio: an R package for extending the grammar of graphics for genomic data”. In: Genome Biology 13.8 (2012), p. R77.

[23] T. Yin, M. Lawrence, and D. Cook. biovizBase: Basic graphic utilities for visualization of genomic data. R package version 1.60.0. 2026. DOI: 10.18129/B9.bioc.biovizBase. URL: https://bioconductor.org/packages/biovizBase.