- Added dependency
ggh4x
to handle facet fill color. In future, it may provide improved faceting options, groups, multiple layers, etc.
-
ggjammaplot()
- fixed error with missing
colnames(x)
orrownames(x)
- fixed error with missing
-
Bumped jamba version dependency to 0.0.104.900 to support SparseMatrix objects as with
SingleCellExperient
andSeurat
matrix data. -
centerGeneData()
- Updated to add
includeAttributes=FALSE
withjamba::rowGroupMeans()
. - Added tests to all basic use cases, and to cover SparseMatrix input.
- Updated to add
-
jammaplot()
- Removed argument
ma_method
, it was deprecated. - Added argument
apply_transform_limit=40
to applyjamba::log2signed()
when any value is above this threshold, only whenuseRank=FALSE
.
- Removed argument
-
ggjammaplot()
- Added argument
apply_transform_limit=40
to applyjamba::log2signed()
when any value is above this threshold, only whenuseRank=FALSE
. - Now uses
ggh4x::facet_wrap2()
to apply color to facet strips.
- Added argument
element_textbox_colorsub()
,element_grob.element_textbox_colorsub()
were removed, in favor of usingggh4x
functions for ggplot2 facet strip color fill.
-
jammaplot()
- A warning was shown
"Warning in min(x, na.rm = na.rm) : no non-missing arguments to min; returning Inf"
which was caused byxlim
not being defined for each plot panel, thereby causingablinesV
to throw an error because no values fit within the undefined x-axis range. Now whenxlim
argument is not provided, it uses the range of x-axis values fromjammacalc()
for each panel. - This change makes panel x-axis ranges more consistent by default.
They should have been consistent already, but in some cases
NA
values caused the range to differ slightly from panel to panel. In most cases, it caused no visible effect in x-axis labels. - This change also allows samples within
centerGroups
groupings to have distinct x-axis ranges, since each individual group can represent potentially very different values depending upon the experiment.
- A warning was shown
All instances of if (class(x) %in% c("a", "b"))
were corrected to use
format compatible with R version 4 which considers this syntax an error
and not a warning. New format is if (any(c("a", "b") %in% class(x)))
.
-
jammaplot()
,update_list_elements()
,centerGeneData()
,ggjammaplot()
- Fixed
if
statement logic to remove length=2 error in all scenarios.
- Fixed
-
jammaplot()
- argument help docs were updated for clarity.
- change argument default to
filterNeg=FALSE
, although this argument is deprecated and only used whenma_method="old"
. The change was made to reflect the current default behavior which usesnoise_floor=0
andnoise_floor_value=NA
, which replaces all values at or below 0 withNA
, causing these values not to contribute to the data centering and MA-plot output.
-
jammaplot()
- New argument
outer_margins
to control the whitespace around the outside of the MA-plot panels, only whendoPar=TRUE
. - The y-axis labels are only shown on the first plot each row, and plot panels are condensed side-by-side.
- The default
margins
has much smallerleft
value, so plots can be placed closer side-by-side. - Far very many MA-plot panels, the plot panels are much more visibly
condensed, especially when
useRank=TRUE
, which previously increased each panelleft
margin by 2 lines; now it only increases theleft
outer margin.
- New argument
-
jammacalc()
- now inherits arguments
controlFloor
,naControlAction
,naControlFloor
consistent withcenterGeneData()
. - now calls
matrix_to_column_rank()
instead of calculating internally.
- now inherits arguments
-
jammaplot()
andggjammaplot()
- gained arguments
controlFloor
,naControlAction
,naControlFloor
consistent withcenterGeneData()
. These arguments are passed tojammacalc()
.
- gained arguments
-
matrix_to_column_rank()
- converts
numeric
matrix to column rank data, as used whenuseRank=TRUE
. - This function becomes its own standalone function so it can be called when necessary in other areas.
- converts
-
jammacalc()
- calls
matrix_to_column_rank()
instead of calculating internally.
- calls
-
centerGeneData()
-
Note that default behavior is unchanged.
-
New argument
controlFloor
to impose a minimum control summary value when the summary value is belowcontrolFloor
. -
New argument
naControlAction
used when all control sample values areNA
:naControlAction="na"
: leave values centered values asNA
(default behavior)naControlAction="row"
: center versus remaining non-NA row valuesnaControlAction="floor"
: center versus numeric floornaControlAction="min"
: center versus the minimum observed value
-
New argument
naControlFloor=0
used only whennaControlAction="floor"
. When zero, values are effectively un-centered. However, sometimes the range of signal is 20-35, in which case it may be practically more useful to usenaControlFloor=20
so data is centered relative to the minimum range of detection.
-
-
Added proper prefix to
ggplot2::after_stat()
forggjammaplot()
.
- Began the process of covering package functions with unit tests.
Currently:
centerGeneData()
.
-
ggjammaplot()
was updated:- Point density now shares the same range for all panels, including outlier panels. Previously, outlier panels generated their own color gradient, due to their specific numeric range of point density values calculated by ggplot on the fly. The new code will define the numeric range using non-outlier samples, then re-uses the same numeric range for outlier panels when there are outlier panels. This step appears to add some lag to rendering, although there is already more lag than with base R graphics.
- New argument
detail_factor
is a single argument to adjust the level of detail in the point density per facet panel.
-
jammacalc()
- The calculation of rank data using
rank(..., na.last=FALSE)
was assigning ties to repeatednumeric
values, but was assigning unique (arbitrary, by order they occur) ranks toNA
values. The new code secretly convertsNA
to the lowestnumeric
value so they are assigned tied rank values.
- The calculation of rank data using
-
volcano_plot()
updates:- Fixed bug where
lfc_colname
was used even when onlyfold_colname
was appropriate for the data. It now properly uses thelfc_values
internal vector for relevant steps. hi_points
now accepts alist
input, to color code different subsets of points different colors- new argument
hi_colors
coincident withhi_points
havinglist
input:length(hi_colors)
should matchlength(hi_points)
so colors will be applied to each vector in thelist
. If no colors are assigned, then bright categorical colors will be defined bycolorjam::group2colors()
. - when
hi_points
is alist
, a color key is placed at the bottom of the plot, making the bottom margin 2 lines taller, and shifting other captions up by 2 lines.
- Fixed bug where
Main change: this version:
- Automatic indication of
controlSamples
in each MA-plot panel. - Ability to supply custom names for each MA-plot panel.
-
jammaplot()
-
whichSamples
acceptscharacter
ornumeric
and will subset itself to match availablenames(x)
ornsamples
accordingly. -
New argument
sample_labels
to provide custom labels for each sample without having to renamecolnames(x)
in the process. An example has been added. -
New argument
controlIndicator
:"titlestar"
- asterisk appended to the title of each plot"labelstar"
- asterisk labeled inside the top corner of each plot"none"
- no indicator is drawn
-
par("mar")
is now only updated whendoPar=TRUE
. -
New argument
panel_hook_function
to supply a custom function to be run after drawing each plot panel. An example has been added, showing how to draw a box around each figure. -
y-axis labels are drawn using
format(..., big.mark=",")
as an improvement foruseRank=TRUE
. -
Margins have been adjusted so the title box default above each plot has more room when there is no
maintitle
that would otherwise have added space to the top of each overall figure.
-
-
find_colname()
is now exported. -
added
log2fold_to_fold()
andfold_to_log2fold()
functions as required byvolcano_plot()
.
volcano_plot()
was throwing an error due to the new use ofutils::modifyList()
, ultimately caused byupdate_function_params()
. That function was updated, resolving the error.jammaplot()
was updated to passpanelWidth="minimum"
tojamba::drawLabels()
for the title box when using base R graphics plots. This change ensures the box is at least the plot panel width, and will be larger if the label is wider than each panel.
-
jammaplot()
title box labels are now placed above plot panels!- This changes is being tested, but it seems like a sensible default not to obscure points in each plot panel.
- two new arguments:
titleAdjPreset
,subtitleAdjPreset
- passed to
jamba::coordPresets()
which defines coordinate positions in base R graphics context. The two main arguments arepreset
andadjPreset
, wherepreset
defines the coordinate "edge" or "corner" position, typically something like "top" or "bottomleft"; andadjPreset
defines relative placement of the label. By default,adjPreset
chooses the opposite orientation, to keep labels inside the plot panel. Howeverpreset="top"
defines the top edge of the plot, andadjPreset="top"
places the label above the top edge of the plot panel. - The calculation of top outer margin is dependent upon the number of
text lines in
maintitle
, and was increased to accomodate the new default placement of title box labels above the top panel. It does not account for multi-line title box labels, in that case, supplymaintitle
with empty extra lines at the end to add spacing.
-
jammaplot()
argumentmargins=c(3.5, 2, 0.3, 0.2)
is typically good for non-ranked MA-plots. WhenuseRank=TRUE
the numbers typically have 4 or more digits, and need more space. In this case by default,margins + c(0, 1, 0, 0)
is used.
jammaplot()
correctly representshighlightPch
point shapes in the highlight point legend at the bottom, viaouter_legend()
.outer_legend()
whenpt.bg=NULL
it will adjustcol
slightly darker for point shapes ranging from 21 to 25, and will assignpt.bg=col
so the fill color is correct.
The volcano_plot()
function has been in use for a long time,
but not in R package form. The sticking point has been the
block arrows drawn in plot margins (outside the plot panel)
which describe the number of points that exceed statistical
thresholds.
Colleagues seem to like having these block arrows
with summary numbers, and they've appeared in some published papers.
That said, sizing block arrows consistently for all plot aspect
ratios has been tricky, and migrating everything to ggplot2
is on the short to-do list. Unclear how block arrows would work
in ggplot2.
volcano_plot()
- Draw volcano plot, work in progressblockArrowMargin()
- draws block arrows in plot marginsgradient_rect()
- draw rectangle with gradient color filllogAxis()
- draw log-transformed-log10(pvalue)
axis labelsfind_colname()
- find colname matching a character stringupdate_function_params()
- update function arguments in placeupdate_list_elements()
- utility called byupdate_function_params()
.
-
update_list_elements()
appears to have identical purpose and functionality asutils::modifyList()
update_function_params()
was updated to callutils::modifyList()
update_list_elements()
is deprecated while this change is tested.
jammaplot()
argument default filterFloorReplacement=NA
:
-
This change corrects an issue where the row mean was calculated using values that may contain a large proportion of zero
0
, therefore pushing the x-axis position toward zero. The effect often also pushed the y-axis difference-from-mean to slightly larger magnitude, since the baseline value was typically closer to zero. -
The effect of the change in argument defaults is that the x-axis position of points displayed will reflect the mean/median of values above zero, and y-axis will reflect the difference from mean/median of values above zero, thus displaying mean and variation of those measurements that detected a signal, without being influenced by the proportion of those points that detected a signal.
-
Specifics:
noise_floor
andnoise_floor_value
will replace deprecated argumentsfilterFloor
andfilterFloorReplacement
, respectively. But the main change is to the default values.- previous default:
filterFloor=0
andfilterFloorReplacement=filterFloor
set any value at or below0
to0
. - new default:
noise_floor=0
andnoise_floor_value=NA
sets any value at or below0
toNA
. - The change mostly affects data with large number of zero
0
values. - Points below
noise_floor
will no longer contribute toward the sample MAD factor, which should be correct as the default. - The x-axis summary value, by default is the mean unless
useMedian=TRUE
in which case it uses the median, is calculated using the remaining measurements, above thenoise_floor
, so by default values above zero will be displayed in each plot panel. - The assumption is that a measurement
0
is an absence of measurement, and therefore should not contribute to the mean for that row of data, nor to the variability (or absence of variability) for the sample column. - The same assumption should hold true for values below zero, where upstream processing should in theory have generated negative values as a result of background subtraction/adjustment by appropriate methods. Negative values are therefore also considered "absence of measurement" and the specific numeric value has no quantitative meaning in this function.
-
All that said, the previous behavior can be used with argument
noise_floor_value=noise_floor
. -
Finally, some case can be made that the points filtered may optionally be displayed, in order to indicate their presence in the data. This option may be enabled in future if it seems necessary.
- It is unclear how to plot points whose values were zero.
- If for example the non-zero mean x-axis position for a row is 12, does it imply the points at for this row would use x=12 and y=-12? Or should these points use x=0 and y=0?
- It seems more sensible not to display points whose measurements have been filtered from analysis - at least for now.
-
ggjammaplot()
was modified for consistency withjammaplot()
:colramp
argument addedoutlierColor
can be a color function, for examplecolramp="inferno"
andoutlierColor="inferno_r"
will use the reverse color ramp for a nice visual effect.- new argument
fillBackground=TRUE
optionally fills each plot panel with the first color ramp color, affecting outlier panels. Previously each plot panel has a small region around the outside that was not filled, due to ggplot2 axis range expansion slightly beyond the 2d density coordinates. - MAD outlier panels were not properly recognized, the MAD values
were displayed but the background was not highlighted with
outlierColor
. Issue has been resolved. noise_floor=0
is the new default value, consistent withjammaplot()
. Any value at or below is set tonoise_floor_value
which by default is NA, but can be changed tonoise_floor
.- The MAD factor text color uses a color that contrasts with the base
color gradient used in each plot panel, using white text versus
dark background for example. It calls
jamba::setTextContrastColor()
. Outlier text is either red or gold, as appropriate.
-
jammaplot()
was modified for consistency withggjammaplot()
:- New arguments
noise_floor
andnoise_floor_value
, which replace - Deprecated arguments
filterFloor
andfilterFloorValue
. filterFloorReplacement=NA
is the new default value, which may be a substantial change for data that contains a large proportion of missing values.- The MAD factor text color uses a contrasting color, as with
ggjammaplot()
. outlierColor="lemonchiffon"
default, consistent withggjammaplot()
. It sounds yummy.
- New arguments
jammaplot()
was not properly passing argumentassay_name
to downstream functionget_se_assaydata()
when the input wasSummarizedExperiment
. It was by default always using the first assay stored in the SE object.
Unfortunately the gridtext
R package issue
wilkelab/gridtext#22 results in removing
this package and ggtext
as dependencies from jamma
. The installation
requires specific recent versions of GCC compiler that I have trouble
resolving on my own linux servers. As a result, they are moved to
Suggests
and the corresponding jamma
functions will handle
them as optional.
Bumped dependency on jamba
to version 0.0.66.900
to
avoid error with rowMedians()
that should use matrixStats::rowMedians()
.
Note: The pkgdown::build_site()
failed due to SSL certificate expiration,
apparently from the crandb.r-pkg.org site. The workaround is to set this
option beforehand, which prevents pkgdown::build_news()
from trying
to access that URL.
options("pkgdown.internet"=FALSE)
-
ggjammaplot()
- the ggplot2 equivalent tojammaplot()
. See examples, there are a variety of example figures, using straight MA-plots, raw and normalized data, using subset of samples, and optionally highlighted points.Still to-do:
- when
blankPlotPos
is used, the plot itself should be empty, without grid lines - add
subtitle
to the bottom-left corner of each plot panel - use
geom_text_repel()
to labelhighlightPoints
- should probably be optional. - more testing for large number of plot panels, for example test the aspect ratio for density and pixel size calculations
- when
-
element_textbox_colorsub()
- a custom ggplot2 element that enables colored facet strip background colors using name-value pairs.- The technique was based upon a post by Claus O. Wilke,
and is the closest to a "true ggplot2" methodology that I found.
Other alternatives involved using the
gtable
package, and modifyinggrob
grid graphical objects directly. See stackoverflow questions/60332202/conditionally-fill-ggtext-text-boxes-in-facet-wrap - Note that this function very likely will move into the
colorjam
package to become the default ofcolorjam::theme_jam()
- This function has not been tested with
facet_grid()
but in principle it should work.
- The technique was based upon a post by Claus O. Wilke,
and is the closest to a "true ggplot2" methodology that I found.
Other alternatives involved using the
-
element_grob.element_textbox_colorsub()
- required for the ggplot2 workaround with facet strip label background colors.
ggtext
package is a dependency forggjammaplot()
, however it is a lightweight and useful package, whose dependencies are largely also in common withggplot2
.
jammaplot()
,jammanorm()
andjammacalc()
were updated to handleuseMedian
by default, but to acceptuseMean
for backward compatibility.
centerGeneData()
has been changed to what was previouslycenterGeneData_new()
, and the old function was renamed tocenterGeneData_v1()
. The new function is designed to be backward compatible.jammaplot()
now acceptsSummarizedExperiment
objects as input, used alongside new argumentassay_name
which determines the matrix to use for MA-plots. Theassay_name
input can be an integer index, or by default it will use the first assay matrix inx
. Alternatively to use the last assay matrix (if normalized data is stored in the last assay position for example) supplyassay_name=Inf
and the default will use the last assay in the list.jammacalc()
now callscenterGeneData()
.jammanorm()
help text was expanded.
Added various entries to TODO.md
for future work.
jammaplot()
fixed issue when applyingfilterFloor
anduseRank=TRUE
, it was converting to rank before applying filter floor. An edge case but important for count data, where usingfilterFloor=0
andfilterFloorReplacement=NA
is useful, and usinguseRank=TRUE
is informative especially when using methods like DESeq2/edgeR downstream with count data.
jammacalc()
new argumentuseRank
so the conversion to rank happens inside this function, as it should.- Added some package prefix to functions such as
jamba::nameVector()
, `jamba::rmNA(). - Removed
require(jamba)
andrequire(matrixStats)
in favor of using proper package prefixing, and check formatrixStats
usingrownames(installed.packages())
. - Cleaned up some R code, removing sections that were deprecated.
- Edited the wording for
jammaplot()
function parameters.
jammaplot()
cleaned up logic on handlingcolramp
andcolrampOutlier
arguments.jammaplot()
defaultma_method="jammacalc"
which is equivalent but slightly streamlines the internal calculations.
jammanorm()
a basic normalization method that uses the output ofjammaplot()
orjammacalc()
, and normalizes data such that the controlGenes are centered at y=0. In words, it makes the controlGenes have mean zero change from average across samples. It optionally takes pre-defined controlGenes (housekeeper genes), and optionally applies an expression minimum threshold, to ensure genes are expressed above noise.
jammaplot()
argument default changed touseMean=TRUE
to plot the mean centered value, instead of the median.
jammaplot()
argumentuseRank=TRUE
will produce the rough equivalent of a non-parametric MA-plot, where the y-axis unit is either the actual change in rank, or the fractional change in rank adjusted by the number of rows.
outer_legend()
is used to place a color legend outside multi-panel base R graphics, for example when usingpar("mfrow"=c(2,2))
. By default it places the legend at the bottom, centered in the plot device. It of course may move tojamba
but that package is already getting overloaded.
jammaplot()
has transitioned from usinggroupSuffix
to add a text suffix to each panel title, to usingsubtitle
to display text in the bottom-left corner of each panel. In most cases, this change results in better use of whitespace on each plot, and helps keep the title label smaller.jammaplot()
allows a list color ramps in the argumentcolramp
, which applies a different color ramp in each panel.jammaplot()
changed how highlightPoints are handled, making it more robust to different types of input, vector or list. Fix error when highlightPoints had no list name.
jammacalc()
is used to calculate data ready for MA-plots, to separate this logic from thejammaplot()
function used for visualization.- The
jammacalc()
function slightly improves upon thejammaplot()
calculations by simplifying the centering by callingcenterGeneData_new()
(orcenterGeneData()
) instead of performing similar calculations itself. The results should be notably faster especially for larger data matrices. - The
jammacalc()
function also changes the result ofgroupedX=TRUE
, which now correctly uses each group median value instead of a median across the group medians. It allows each group of MA-plot panels defined bycenterGroups
to be completely independent of other groups, which has benefits and discrepancies that depend upon how thecenterGroups
values are defined relative to the intended downstream statistical comparisons. For example, we recommend centerGroups broadly include the sample groups that will eventually be compared, specifically so the distributions are directly compared in the MA-plot visualization. However, certain per-group QC checks are ideally performed by usingcenterGroups
for each sample group. Overall, be aware of the effects of each scenario, and adjust the expectations and assumptions accordingly. jammaplot()
new argumentma_method
wherema_method="old"
calls the previous code for MA-plot calculations, andma_method="jammacalc"
callsjammacalc()
with the newer equivalent calculations.
- Added
"colorjam"
to R package dependencies. - Removed R package dependencies on
"rgeos"
and"sp"
. points2polygonHull()
now usesgrDevices::chull()
instead ofrgeos::gConvexHull()
. The function accepts numericmatrix
,data.frame
,tibble
,tbl
, andSpatialPoints
input, and can output either a two-column numericmatrix
, orSpatialPolygons
as output.- the default argument to
centerGeneData()
was changed from"indata"
to"x"
to be consistent with Tidyverse syntax.
-
centerGeneData()
will soon be replaced bycenterGeneData_new()
after a period of testing. The functions should be equivalent. The new function usesjamba::rowGroupMeans()
to produce the summary values used for centering. The change will consolidate the logic of calculating row group values intojamba::rowGroupMeans()
, as opposed to duplicating only certain parts of that functionality insidecenterGeneData()
. The new function also surfaces outlier detection and removal during centering in one step. The potential downside, and need for a period of testing, is that the full input matrix is centered versus the expanded row group matrix in one step. Briefly there will be two matrices with identical dimensions, which will produce a higher memory profile. For extremely large matrices, this change may become problematic, and may require an alternative strategy during the centering step. -
jammaplot()
will be refactored to streamline certain calculations using the newercenterGeneData_new()
.
- now creates a default
groupSuffix
based upon thecenterGroups
if any, the goal is to ensure the center groups are by default included in each panel label. - Columns with missing data (e.g. all NA values) are now handled
by plotting a blank plot panel with background color
outlierColor
. The MAD value is assignedInf
. - now uses
maintitle
as the title for the overall set of plots, displayed in the top outer margin of each page. New argumentmaintitleCex
controls title text size. - the default input argument is changed from
"object"
to"x"
, to be consistent with other tidyverse-friendly workflows. - attribute names are changed from "mvaMADs", "mvaMADoutliers", "mvaMADfactors" to "MADs", "MADoutliers", "MADfactors". The names using "mva" are deprecated and will be retired in a future version of jamma.
- outlier MAD label cex is now
0.9*titleCex
, making the MAD label slightly smaller than the panel label. - Outlier plot panels are now highlighted using
>= outlierMAD
, consistent with the formal outlier detection. Previously it was erroneously using> outlierMAD
. - new argument
subtitleBoxColor
which defines the background color for optional subtitles printed at the bottom of each plot panel. Used to color-codecenterGroups
, ifgroupSuffix=""
and subtitle containscenterGroups
as labels.
-
Very likely, the base R plotting may be replaced or augmented by using ggplot2. Past reason for using base R were due to panel layout, and wanting detailed control over smoothScatter per-panel density plotting.
-
In future, the
centerGroups
value may be displayed inside thesubtitle
label box at the bottom-left corner of each panel, color-coded to help indicate the centering group. -
In future,
controlSamples
may be indicated by appending an asterisk "*" at the end of the main label for each panel.
drawLabels()
andcoordPresets()
were moved to thejamba
package, consistent with the need for wider re-use among Jam packages.- Added dependency on the version of jamba that includes
drawLabels()
.
- Based upon feedback regarding difficulty installing the "rgeos" package,
changed
jammaplot()
to usegrDevices::chull()
whendoHighlightPolygon=TRUE
. The output should be identical, without the need to install the rgeos package. - changed
drawLabels()
now uses label height to define the effects ofboxCexAdjust
on the label box size, making the x- and y-adjustment more consistent when using long labels; it also usesjamba::getPlotAspect()
to correct for aspect ratio. Note it is probably far less useful to supply x and y values forboxCexAdjust
. - made adjustments based upon the single-line height and not the total string height, affecting multi-line labels.
drawLabels()
which draws a colored box with label inside, positioned by default at the center of the x and y coordinates provided. This function will be tested then moved to the "jamba" package.
jammaplot()
by default will usedrawLabels()
to print a label in each panel, instead of the previous method which usedlegend()
and was not properly centered. In future, labels may detect whether to enforce word-wrap in order to keep labels from overlapping adjacent panels.
- pkgdown was added to the site documentation.
jammaplot()
had a fairly substantial shift in default behavior, concerning the x-axis coordinate when usingcenterGroups
to center a subset of samples. Previous default was to use one global x-axis coordinate across all samples, regardless of thecenterGroups
. New default behavior is to calculate an x-axis value for eachcenterGroups
so within each group the data is self-contained. This behavior can be controlled withgroupX=TRUE
which applies grouping to the x-axis, andgroupX=FALSE
for the previous behavior. I admit, this change has pros and cons. On the one hand, there is inherent benefit for keeping each subset grouping independent, with the possible downside that comparisons across groupings may not be visible.
- Bumped the version number to cover a few smaller updates.
jammaplot()
now more consistently handles highlight point parameters, where each are expected in list form:highlightPoints
,highlightPch
,highlightCex
, andhighlightCex
. IfhighlightPoints
is sent as a vector, it is converted to a one-vector list. IfhighlightPoints
is a list, then the other parameters are converted to list as needed (as.list()
) and expanded tolength(highlightPoints)
. This way, each highlight set of points can have custom color, size, and shape, to help visually discern them.
centerGeneData()
the main tool for calculations byjammaplot()
, centers data by subtracting the row mean or median; optionally within groups of columns; optionally with specified control columns per group.jammaplot()
the main MA-plot function.points2polygonHull()
takes a set of points and draws a polygon hull encompassing them. It callsrgeos::gConvexHull()
. The function is intended to indicate the location of highlighted points on each MA-plot panel.
- several default settings were changed for
jammaplot()
: largertitleCex
; outlierColramp is NULL, in favor of using outlierColor to change only the first color fromcolramp
.