Version: | 1.3.10 |
Title: | Graphics in the Context of Analyzing High-Throughput Data |
Author: | Wolfgang Raffelsberger [aut, cre] |
Maintainer: | Wolfgang Raffelsberger <w.raffelsberger@gmail.com> |
Description: | Additional options for making graphics in the context of analyzing high-throughput data are available here. This includes automatic segmenting of the current device (eg window) to accommodate multiple new plots, automatic checking for optimal location of legends in plots, small histograms to insert as legends, histograms re-transforming axis labels to linear when plotting log2-transformed data, a violin-plot <doi:10.1080/00031305.1998.10480559> function for a wide variety of input-formats, principal components analysis (PCA) <doi:10.1080/14786440109462720> with bag-plots <doi:10.1080/00031305.1999.10474494> to highlight and compare the center areas for groups of samples, generic MA-plots (differential- versus average-value plots) <doi:10.1093/nar/30.4.e15>, staggered count plots and generation of mouse-over interactive html pages. |
Depends: | R (≥ 3.5.0) |
Imports: | graphics, grDevices, grid, lattice, RColorBrewer, stats, wrMisc |
Suggests: | dplyr, factoextra, FactoMineR, ggpubr, knitr, limma, rmarkdown, sm |
License: | GPL-3 |
Encoding: | UTF-8 |
RoxygenNote: | 7.3.2 |
VignetteBuilder: | knitr |
NeedsCompilation: | no |
Packaged: | 2025-06-17 11:15:18 UTC; wraff |
Repository: | CRAN |
Date/Publication: | 2025-06-17 22:30:02 UTC |
Add text to points on plot
Description
This function allows to add custom text as lables to points on standard xy-plot.
Usage
.addTextToPoints(
x,
paramLst = NULL,
labels = NULL,
cex = NULL,
col = NULL,
adj = "auto",
callFrom = NULL,
silent = TRUE,
debug = FALSE
)
Arguments
x |
(matrix, data.frame) coordinated of ponts on plot |
paramLst |
(list) additional parameters for plotting (priority over separate cex or col), otherwise names displayed will be taken from 'labels' or rownames of coordinates 'x' |
labels |
(character) the text to be displayed (has not priority over 'paramLst'), if nothing valid found numbers will be displayed |
cex |
(character) (numeric) size of text, as expansion factor (see also |
col |
(character or integer) use custom colors |
adj |
(character) values other than 0,0.5 or 1 will lead to 'auto' where text is displayed only to left of sufficient space available |
callFrom |
(character) allow easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) display additional messages for debugging |
Value
This function make a plot and may retiurn an optional matrix of outlyer-data (depending on argument getOutL
)
See Also
prcomp
(used here for the PCA underneith) , princomp
, see the package FactoMineR for multiple plotting options or ways of combining categorical and numeric data
Examples
set.seed(2019); dat1 <- matrix(round(runif(30),2), ncol=2)
plot(dat1) # traditional plot
.addTextToPoints(dat1, labels=letters[1:nrow(dat1)])
Search best corner of plot for placing for legend This function aims to find best corner for plotting a legend.
Description
Search best corner of plot for placing for legend
This function aims to find best corner for plotting a legend.
Usage
.bestLegendLoc(
dat,
txtLen,
txtHi,
displayPlotSearch = FALSE,
silent = TRUE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(matrix, list or data.frame) main data of plot |
txtLen |
(numeric, length=1) |
txtHi |
(numeric, length=1) text height from graphics::strheight() (including inter-line) |
displayPlotSearch |
(logical) decide if lines to mark area where data is searched for legend should be drawn |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Value
numeric vector with counts of umber of points expected to enter legend-location for each corner (ie legend-localization)
See Also
Examples
dat1 <- matrix(c(1:5,1,1:5,5), ncol=2)
(legLoc <- .bestLegendLoc(dat1, txtLen=0.4, txtHi=28))
Colors based on p-Values
Description
This function helps defining color-gradient based on p-Values. This fuction requires package RColorBrewer being installed
Usage
.colorByPvalue(
x,
br = NULL,
col = NULL,
asIndex = FALSE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
x |
(numeric) p-values (main input) |
br |
(numeric) custom breaks (used with cut) |
col |
custom colors (must be of length(br) -1) |
asIndex |
(logical) custom breaks (used with cut) |
silent |
(logical) suppress messages |
debug |
(logical) supplemental messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
This function retruns a color-gradient based on p-Values
See Also
(for PCA) plotPCAw
)
Examples
.colorByPvalue((1:10)/10)
Estimate size/distance of margin to edge of image (png) in pixels
Description
This function allows estimating size/distance of margin to edge of image (png) in pixel and return numeric vector.
Usage
.determFigMargPix(marg, res, callFrom = NULL, silent = FALSE, debug = FALSE)
Arguments
marg |
(numeric) distance of margin in inch (as given in |
res |
(numeric, length=1) resolution of image (png) |
callFrom |
(character) allows easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
Value
This function returns a numeric vetctor matrix with (estimated) distance to figure margins in pixels
See Also
convertPlotCoordPix
, mouseOverHtmlFile
Examples
.determFigMargPix(c(5,4,4,2),100)
Transform levels into index
Description
This function transforms levels into index. This function has been depreciated, please use wrMisc::levIndex() insted.
Usage
.levIndex(dat, asSortedLevNa = FALSE)
Arguments
dat |
(numeric) initial levels (main input) |
asSortedLevNa |
(logical) |
Value
This function retruns a color-gradient based on p-Values
See Also
(for PCA) plotPCAw
)
Examples
library(wrMisc)
Predict and return pixel location of points of current plot
Description
This function allows predicting the pixel location of points of current plot. Note: may be imprecise in case of x or y with all same values.
Usage
.predPointsPix(
x,
y,
dimPng,
res,
marg,
fromTop = TRUE,
scExt = 0.04,
displ = FALSE,
callFrom = NULL,
silent = FALSE,
debug = FALSE
)
Arguments
x |
(numeric) initial coordinates for plot |
y |
(numeric) initial coordinates for plot |
dimPng |
(numeric, length=2) width and hight of png |
res |
(numeric, length=1) resultion of png |
marg |
(numeric, length=4) margins in inches (as given by |
fromTop |
(logical) default counting in html is from top |
scExt |
(numeric, length=1) extending scale (default at 0.04 ie 4 %) |
displ |
(logical) optional plot |
callFrom |
(character) allows easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
Value
This function returns a numeric matrix with 2 columns 'xPix' and 'yPix' (with length(x) rows); and optionally a plot (if argument displ=TRUE
)
See Also
convertPlotCoordPix
, mouseOverHtmlFile
Examples
.predPointsPix(x=c(1,100), y=c(1,100), dimPng=c(700,600), res=200, marg=c(5,4,4,2))
Locate sample index from index or name of pair-wise comparisons
Description
This function helps locating sample index from index or name of pair-wise comparisons
Usage
.sampNoDeMArrayLM(
MArrayObj,
useComp,
groupSep = "-",
lstMeans = "means",
lstP = "BH",
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
MArrayObj |
(MArray type objct) main input |
useComp |
(matrix) types of pair-wise comparisons to be performed |
groupSep |
(character) separator used with pair-wise grouping |
lstMeans |
(character) type of summarization, default is 'means' |
lstP |
(character) type of multiple testing correction data to choose from |
silent |
(logical) suppress messages |
debug |
(logical) supplemental messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
This function returns a integer vector of indexes
See Also
(for PCA) plotPCAw
)
Examples
aa <- 1:5
Search Column Name This function provides help when seraching column names
Description
Search Column Name
This function provides help when seraching column names
Usage
.serachColName(
x,
searchColNa,
plusLowerCaps = TRUE,
returnList = TRUE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
x |
(matrix or data.frame) main input |
searchColNa |
(character) |
plusLowerCaps |
(logical) add lower caps to search |
returnList |
(logical) |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
integer vector with index of colnames found or list with $foundNa and $remainNa
See Also
convertPlotCoordPix
; use htmlSpecCharConv
to convert special characters for proper html display
Examples
mat1 <- matrix(1:6, ncol=3, dimnames=list(NULL, LETTERS[1:3]))
.serachColName(mat1, c("C","F","A"))
MA-plot (differential intensity versus average intensity)
Description
This type of plot for display of relative changes versus (mean) absolute abundance is very common in high-throughput biology, see MA-plot.
Basically one compares two independent series of measures (ie gene transcript or protein abundance values) of 2 samples/data-sets or the means of 2 groups of replicates.
And the log-fold-change ('Minus'=M) is plotted againts the absolute mean value ('Average'=A).
Furthermore, output from statistical testing by moderTest2grp
or moderTestXgrp
can be directly read to produce MA plots for diagnostic purpose.
Please note, that plotting a very high number of points in transparency (eg >10000) may take several seconds.
Usage
MAplotW(
Mvalue,
Avalue = NULL,
useComp = 1,
filtFin = NULL,
ProjNa = NULL,
FCthrs = NULL,
subTxt = NULL,
grayIncrem = TRUE,
col = NULL,
pch = 16,
compNa = NULL,
batchFig = FALSE,
cexMa = 1.8,
cexLa = 1.1,
limM = NULL,
limA = NULL,
annotColumn = c("SpecType", "GeneName", "EntryName", "Accession", "Species", "Contam"),
annColor = NULL,
cexPt = NULL,
cexSub = NULL,
cexTxLab = 0.7,
namesNBest = NULL,
NbestCol = 1,
NaSpecTypeAsContam = TRUE,
useMar = c(6.2, 4, 4, 2),
returnData = FALSE,
callFrom = NULL,
silent = FALSE,
debug = FALSE
)
Arguments
Mvalue |
(numeric, list or MArrayLM-object) main data to plot; if numeric, the content will be used as M-values (and A-values must be provided separateley);
if list or MArrayLM-object, it must conatin list-elements named |
Avalue |
(numeric, list or data.frame) if |
useComp |
(integer) choice of one of multiple comparisons present in |
filtFin |
(matrix or logical) The data may get filtered before plotting: If |
ProjNa |
(character) custom title |
FCthrs |
(numeric) Fold-Change threshold (display as line) give as Fold-change and NOT log2(FC) |
subTxt |
(character) custom sub-title |
grayIncrem |
(logical) if |
col |
(character) custom color(s) for points of plot (see also |
pch |
(integer) type of symbol(s) to plot (default=16) (see also |
compNa |
depreciated, please use |
batchFig |
(logical) if |
cexMa |
(numeric) font-size of title, as expansion factor (see also |
cexLa |
(numeric) size of axis-labels, as expansion factor (see also |
limM |
(numeric, length=2) range of axis M-values |
limA |
(numeric, length=2) range of axis A-values |
annotColumn |
(character) column names of annotation to be extracted (only if |
annColor |
(character or integer) colors for specific groups of annotation (only if |
cexPt |
(numeric) size of points, as expansion factor (see also |
cexSub |
(numeric) size of subtitle, as expansion factor (see also |
cexTxLab |
(numeric) size of text-labels for points, as expansion factor (see also |
namesNBest |
(integer or character, length=1) number of best points to add names in figure; if 'passThr' all points passing FC-filter will be selected;
if the initial object |
NbestCol |
(character or integer) colors for text-labels of best points |
NaSpecTypeAsContam |
(logical) consider lines/proteins with |
useMar |
(numeric,length=4) custom margings (see also |
returnData |
(logical) optional returning data.frame with (ID, Mvalue, Avalue, FDRvalue, passFilt) |
callFrom |
(character) allow easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
Value
This function plots an MA-plot (to the current graphical device); if returnData=TRUE
, a data.frame with ($ID, $Mvalue, $Avalue, $FDRvalue, $passFilt) gets returned
See Also
(for PCA) plotPCAw
Examples
library(wrMisc)
set.seed(2005); mat <- matrix(round(runif(600),2), ncol=6)
rownames(mat) <- c(rep(letters[1:25],each=3), letters[2:26])
MAplotW(mat[,2] -mat[,1], A=rowMeans(mat))
## assume 2 groups with 3 samples each
matMeans <- rowGrpMeans(mat, gr=gl(2,3,labels=LETTERS[3:4]))
MAplotW(M=matMeans[,2] -matMeans[,1], A=matMeans)
## assume 2 groups with 3 samples each and run moderated t-test (from package 'limma')
tRes <- moderTest2grp(mat, gl(2,3))
MAplotW(tRes$Mval, tRes$Amean)
MAplotW(M=tRes$Mval, A=tRes$means, FCth=1.3)
MAplotW(tRes)
MAplotW(tRes, limM=c(-2,2), FCth=1.3)
Volcano-Plot (Statistical Test Outcome versus Relative Change)
Description
This type of plot is very common in high-throughput biology, see Volcano-plot. Basically, this plot allows comparing the outcome of a statistical test to the relative change (ie log fold-change, M-value).
Usage
VolcanoPlotW(
Mvalue,
pValue = NULL,
useComp = 1,
filtFin = NULL,
tit = NULL,
ProjNa = NULL,
FCthrs = NULL,
FdrList = NULL,
FdrThrs = NULL,
FdrType = NULL,
subTxt = NULL,
grayIncrem = TRUE,
col = NULL,
pch = 16,
compNa = NULL,
batchFig = FALSE,
cexMa = 1.8,
cexLa = 1.1,
limM = NULL,
limp = NULL,
annotColumn = c("SpecType", "GeneName", "EntryName", "Accession", "Species", "Contam"),
annColor = NULL,
expFCarrow = FALSE,
cexPt = NULL,
cexSub = NULL,
cexTxLab = 0.7,
namesNBest = NULL,
NbestCol = 1,
sortLeg = "descend",
NaSpecTypeAsContam = TRUE,
useMar = c(6.2, 4, 4, 2),
returnData = FALSE,
callFrom = NULL,
silent = FALSE,
debug = FALSE
)
Arguments
Mvalue |
(MArrayLM-object, numeric or matrix) data to plot; M-values are typically calculated as difference of log2-abundance values and 'pValue' the mean of log2-abundance values;
M-values and p-values may be given as 2 columsn of a matrix, in this case the argument |
pValue |
(numeric, list or data.frame) if |
useComp |
(integer, length=1) choice of which of multiple comparisons to present in |
filtFin |
(matrix or logical) The data may get filtered before plotting: If |
tit |
(character) custom title (has priority over |
ProjNa |
(character) will be added to automatic title (if custom title |
FCthrs |
(numeric) Fold-Change threshold (display as line) give as Fold-change and NOT log2(FC), default at 1.5, set to |
FdrList |
(numeric) FDR data or name of list-element |
FdrThrs |
(numeric) FDR threshold (display as line), default at 0.05, set to |
FdrType |
(character) FDR-type to extract if |
subTxt |
(character) custom sub-title |
grayIncrem |
(logical) if |
col |
(character) custom color(s) for points of plot (see also |
pch |
(integer) type of symbol(s) to plot (default=16) (see also |
compNa |
(character) names of groups compared |
batchFig |
(logical) if |
cexMa |
(numeric) font-size of title, as expansion factor (see also |
cexLa |
(numeric) size of axis-labels, as expansion factor (see also |
limM |
(numeric, length=2) range of axis M-values |
limp |
(numeric, length=2) range of axis FDR / p-values |
annotColumn |
(character) column names of annotation to be extracted (only if |
annColor |
(character or integer) colors for specific groups of annotation (only if |
expFCarrow |
(logical, character or numeric) optional adding arrow for expected fold-change; if |
cexPt |
(numeric) size of points, as expansion factor (see also |
cexSub |
(numeric) size of subtitle, as expansion factor (see also |
cexTxLab |
(numeric) size of text-labels for points, as expansion factor (see also |
namesNBest |
(integer or character) for display of labels to points in figure: if 'pass','passThr' or 'signif' all points passing thresholds; if numeric (length=1) this number of best points will get labels
if the initial object |
NbestCol |
(character or integer) colors for text-labels of best points, also used for arrow |
sortLeg |
(character) sorting of 'SpecType' annotation either ascending ('ascend') or descending ('descend'), no sorting if |
NaSpecTypeAsContam |
(logical) consider lines/proteins with |
useMar |
(numeric,length=4) custom margings (see also |
returnData |
(logical) optional returning data.frame with (ID, Mvalue, pValue, FDRvalue, passFilt) |
callFrom |
(character) allow easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
Details
In high-throughput biology data are typically already transformed to log2 and thus, the 'M'-values (obtained by subtrating two group means) represent a relative change.
Output from statistical testing by moderTest2grp
or moderTestXgrp
can be directly read to produce Volcano plots for diagnostic reasons.
Please note, that plotting a very high number of points (eg >10000) in transparency may take several seconds.
Value
This function simply plots an MA-plot (to the current graphical device), if returnData=TRUE
an optional data.frame with (ID, Mvalue, pValue, FDRvalue, passFilt) can be returned
See Also
(for PCA) plotPCAw
)
Examples
library(wrMisc)
set.seed(2005); mat <- matrix(round(runif(900),2), ncol=9)
rownames(mat) <- paste0(rep(letters[1:25], each=4), rep(letters[2:26],4))
mat[1:50,4:6] <- mat[1:50,4:6] + rep(c(-1,1)*0.1,25)
mat[3:7,4:9] <- mat[3:7,4:9] + 0.7
mat[11:15,1:6] <- mat[11:15,1:6] - 0.7
## assume 2 groups with 3 samples each
gr3 <- gl(3, 3, labels=c("C","A","B"))
tRes2 <- moderTest2grp(mat[,1:6], gl(2,3), addResults = c("FDR","means"))
# Note: due to the small number of lines only FDR chosen to calculate
VolcanoPlotW(tRes2)
## Add names of points passing custom filters
VolcanoPlotW(tRes2, FCth=1.3, FdrThrs=0.2, namesNBest="passThr")
## assume 3 groups with 3 samples each
tRes <- moderTestXgrp(mat, gr3, addResults = c("FDR","means"))
# Note: due to the small number of lines only FDR chosen to calculate
VolcanoPlotW(tRes)
VolcanoPlotW(tRes, FCth=1.3, FdrThrs=0.2)
VolcanoPlotW(tRes, FCth=1.3, FdrThrs=0.2, useComp=2)
Add bagplot to existing plot
Description
This function adds a bagplot on an existing (scatter-)plot allowing to highlight the central area of the data.
Briefly, a bagplot is a bivariate boxplot, see Bagplot, following the basic idea of a boxplot in two dimensions.
Of course, multimodal distributions - if not separated first - may likely lead to mis-interpretation, similarly as it is known for interpreting boxplots.
If a group of data consists only of 2 data-points, they will be conected using a straight line.
It is recommended using transparent colors to highlight the core part of a group (if only 2 points are available, they will be conected using a straight line),
in addition, one could use the option to re-plot all (non-outlyer) points (arguments reCol
, rePch
and reCex
must be used).
Usage
addBagPlot(
x,
lev1 = 0.5,
outCoef = 2,
bagCol = NULL,
bagCont = bagCol,
bagLwd = 1.5,
nCore = 4,
outlCol = NULL,
outlPch = NULL,
outlCex = 0.6,
reCol = NULL,
rePch = NULL,
reCex = NULL,
ctrPch = NULL,
ctrCol = NULL,
ctrCex = NULL,
addSubTi = TRUE,
returnOutL = FALSE,
silent = TRUE,
callFrom = NULL,
debug = FALSE
)
Arguments
x |
(matrix, list or data.frame) main numeric input of data/points to plot |
lev1 |
(numeric) min content of data for central area (default 0.5 for 50 percent) |
outCoef |
(numeric) parameter for defining outliers (equivalent to |
bagCol |
(character or integer) color for filling center part of bagplot (default light transparent grey); Note: It is highly suggested to use transparency, otherwise points underneith will be covered |
bagCont |
(character) color for inner and outer contours of bagplot |
bagLwd |
(numeric) line width for outer contour, set to |
nCore |
(integer) decide when center should be determined by median or mean: if number of points reach |
outlCol |
(character or integer) color for highlighting outlyers (for text and replottig outlyers points), set to |
outlPch |
(integer) symbol replotting highlighted outlyers (for text and replottig outlyers points), set to |
outlCex |
(numeric) cex type expansion factor for labels of highlighted outlyers, set to |
reCol |
(character or integer) color for replotting (non-outlyer) points, default set to |
rePch |
(integer) symbol for replotting (non-outlyer) points, default set to |
reCex |
(numeric) cex type expansion factor for lfor replotting (non-outlyer) points, default set to |
ctrPch |
(integer) symbol for showing group center (see also |
ctrCol |
(character or integer) color for group center symbol and potential outlyers (names of outlyers will shown if |
ctrCex |
(numeric) cex type expansion factor for size of group center (see also |
addSubTi |
(logical) decide if subtitle, ie names of points should be added in plot for points considered as potential outlyers |
returnOutL |
(logical) decide if rownames of (potential) outlyer values should be returned when running the function |
silent |
(logical) suppress messages |
callFrom |
(character) allow easier tracking of messages produced |
debug |
(logical) display additional messages for debugging |
Details
The outlyer detection works similar to the one used in boxplot
: The distance of a given point is compared to the median distance of all points to their respective group-center plus
the 25 - 75 quantile-distance (of all points) times the multiplicative factor of argument outCoef
.
Value
This function returns primarily a plot, optionally it may return of matrix with outlyers (if argument returnOutL=TRUE
)
See Also
Examples
set.seed(2020); dat1 <- matrix(round(rnorm(2000),3),ncol=2); rownames(dat1) <- 1:nrow(dat1)
dat1 <- dat1 + 5*matrix(rep(c(0,1,1,0,0,0,1,1),nrow(dat1)/4), byrow=TRUE, ncol=2)
col1 <- rgb(red=c(153,90,203,255), green=c(143,195,211,125), blue=c(204,186,78,115),
alpha=90, maxColorValue=255)
## suppose we know the repartition into 4 subgroups which we would like to highlight them
grp1 <- rep(1:4, nrow(dat1)/4)
plot(dat1, col=grey(0.8), xlab="x", ylab="y", las=1, pch=grp1)
for(i in 1:4) addBagPlot(dat1[which(grp1==i),], bagCol=col1[i])
## slightly improved
if(requireNamespace("wrMisc", quietly=TRUE)) {library(wrMisc);
col2 <- convColorToTransp(col1, 255)} else col2 <- col1
plot(dat1, col=grey(0.8), xlab="x", ylab="y", las=1, pch=grp1)
for(i in 1:4) addBagPlot(dat1[which(grp1==i),], bagCol=col1[i], outlPch=i,
outlCol=col2[i], bagLwd=3)
Find best place on plot for placing legend
Description
This function tries to find the best location for placing a legend of a bivariate plot, ie scatter-plot.
All 4 corners of the data to plot are inspected for the least occupation by data plotted while displaying the content of sampleGrp
.
Alternatively, by setting the argument showLegend
the user-defined legend will be returned
Usage
checkForLegLoc(
matr,
sampleGrp = NULL,
showLegend = TRUE,
suplSpace = 4,
testCorner = 1:4,
silent = TRUE,
debug = FALSE,
callFrom = NULL
)
Arguments
matr |
(matrix, list or data.frame) main data of plot |
sampleGrp |
(character or factor) with this option the text to be displayed in the legend may be taken into consideration for its length |
showLegend |
(logical or character) decide if |
suplSpace |
(numeric) allows to consider extra room taken in legend by symbol and surrounding space, interpreted as n additional characters |
testCorner |
(integer) which corners should be considered (1=left-top, 2=right-top, right-bottom, left-bottom) |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Value
list with $showL indicating if legend is desired and $loc for the proposition of the best location, $nConflicts gives the counts of conflicts
See Also
Examples
dat1 <- matrix(c(1:5,1,1:5,5), ncol=2)
grp <- c("abc","efghijk")
(legLoc <- checkForLegLoc(dat1, grp))
plot(dat1, cex=3)
legend(legLoc$loc, legend=grp, text.col=2:3, pch=1, cex=0.8)
Convert points of plot to coordinates in pixels
Description
This function allows conversion the plotting positions ('x' and 'y' coordinates) of points in a given plot into coordinates in pixels (of the entire plotting region).
It was designed to be used as coordinates in an html file for mouse-over interactivity (display of names of points and links).
Of course, the size of the plotting region is crucial and may not be changed afterwards (if the plot is not written to file using png
etc).
In turn the function mouseOverHtmlFile
will use the pixel-coordinates, allowing to annotate given points of a plot for mouse-over interactive html.
Usage
convertPlotCoordPix(
x,
y,
useMar = c(6.2, 4, 4, 2),
plotDim = c(1400, 800),
plotRes = 100,
fromTop = TRUE,
callFrom = NULL,
silent = FALSE,
debug = FALSE
)
Arguments
x |
(numeric) initial plotting coordinates on x-axis, names of vector - if available- will be used as IDs |
y |
(numeric) initial plotting coordinates on y-axis |
useMar |
(numeric,length=4) margins defined with plot, see also |
plotDim |
(integer, length=2) dimension of the plotting device in pixels, see also |
plotRes |
(integer) resoltion of plotting device, see also |
fromTop |
(logical) toggle if poordinates should start from top |
callFrom |
(character) allows easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
Value
matrix with x- and y-coordinates in pixels
See Also
Examples
df1 <- data.frame(id=letters[1:10], x=1:10, y=rep(5,10),mou=paste("point",letters[1:10]),
link=file.path(tempdir(),paste0(LETTERS[1:10],".html")), stringsAsFactors=FALSE)
## Typically one wants to get pixel-coordinates for plots written to file.
## Here we'll use R's tempdir, later you may want to choose other locations
pngFile <- file.path(tempdir(),"test01.png")
png(pngFile, width=800, height=600, res=72)
## here we'll just plot a set of horiontal points at default parameters ...
plot(df1[,2:3], las=1, main="test01")
dev.off()
## Note: Special characters should be converted for proper display in html during mouse-over
library(wrMisc)
df1$mou <- htmlSpecCharConv(df1$mou)
## Let's add the x- and y-coordiates of the points in pixels to the data.frame
df1 <- cbind(df1,convertPlotCoordPix(x=df1[,2], y=df1[,3], plotD=c(800,600),plotRes=72))
head(df1)
## using mouseOverHtmlFile() one could now make an html document with interactive
## display of names and clockable links to the coordinates we determined here ...
Cumulative (or sorted) frequency plot (takes columns of 'dat' as separate series)
Description
Display data as sorted or cumulative frequency plot. This type of plot represents an alternative to plotting data as histograms.
Histograms are very universal and which are very intuitive. However,fine-tuning the bandwith (ie width of the bars) may be very delicate,
fine resultion details may often remain hidden.
One of the advanges of directly displaying all data-points is that subtile differences may be revealed easier, compared to calssical histograms.
Furthermore, the plot prensented her offeres more options to display multiple series of data simultaneaously.
Thus, this type of plot may be useful to compare eg results of data normalization.
Of course, with very large data-sets (eg > 3000 values) this gain of 'details' will be less important (compared to histograms) and will penalize speed.
In such cases the argument thisResol
will get useful as it allows to reduce the resultion and introduce binning.
Alternatively for very large data-sets one may looking into density-plots or vioplots (eg vioplotW
).
The argument CVlimit
allows optionally excluding extreme values.
If numeric (& > 2 columns), its value will be used exclExtrValues
to identify series with column-median > 'CVlimit'.
Of course, exclusion of extreme values should be done with great care, important features of the data may get lost.
Usage
cumFrqPlot(
dat,
cumSum = FALSE,
exclCol = NULL,
colNames = NULL,
displColNa = TRUE,
tit = NULL,
xLim = NULL,
yLim = NULL,
xLab = NULL,
yLab = NULL,
col = NULL,
CVlimit = NULL,
thisResol = NULL,
supTxtAdj = 0,
supTxtYOffs = 0,
useLog = "",
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(matrix or data.frame) data to plot/inspect |
cumSum |
(logical) for either plotting cumulates Sums (then |
exclCol |
(integer) columlns to exclude |
colNames |
(character) for alternative column/series names in display, as long as |
displColNa |
(logical) display column-names |
tit |
(character) custom title |
xLim |
(numeric) custom limit for x-axis (see also |
yLim |
(numeric) custom limit for y-axis (see also |
xLab |
(character) custom x-axis label |
yLab |
(character) custom y-axis label |
col |
(integer or character) custom colors |
CVlimit |
(numeric) for the tag 'outlier column' (uses |
thisResol |
(integer) resolution |
supTxtAdj |
(numeric) parameter |
supTxtYOffs |
(numeric) supplemental offset for text on y axis |
useLog |
(character) default="", otherwise for setting axis in log-scale "x", "y" or "xy" |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Value
This function plots to the current garphical device
See Also
layout
, exclExtrValues
for decision of potential outliers; hist
, vioplotW
Examples
set.seed(2017); dat0 <- matrix(rnorm(500), ncol=5, dimnames=list(NULL,1:5))
cumFrqPlot(dat0, tit="Sorted values")
cumFrqPlot(dat0, cumSum=TRUE, tit="Sum of sorted values")
Add arrow for expected Fold-Change to VolcanoPlot or MA-plot
Description
This function allows adding an arrow indicating a fold-change to MA- or Volcano-plots. When comparing mutiple concentratios of standards in benchmark-tests it may be useful to indicate the expected ratio in a pair-wise comparison. In case of main input as list or MArrayLM-object (as generated from limma), the colum-names of multiple pairwise comparisons can be used for extracting a numeric content (supposed as concentrations in sample-names) which will be used to determine the expected ratio used for plotting. Optionally the ratio used for plotting can be returned as numeric value.
Usage
foldChangeArrow(
FC,
useComp = 1,
isLin = TRUE,
asX = TRUE,
col = 2,
arr = c(0.005, 0.15),
lwd = NULL,
addText = c(line = -0.9, cex = 0.7, txt = "expected", loc = "toright"),
returnRatio = FALSE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
FC |
(numeric, list or MArrayLM-object) main information for drawing arrow : either numeric value for fold-change/log2-ratio of object to search for colnames of statistical testing for extracting numeric part |
useComp |
(integer) only used in case FC is list or MArrayLM-object an has multiple pairwise-comparisons |
isLin |
(logical) inidicate if |
asX |
(logical) indicate if arrow should be on x-axis |
col |
(integer or character) custom color |
arr |
(numeric, length=2) start- and end-points of arrow (as relative to entire plot) |
lwd |
(numeric) line-width of arrow |
addText |
(logical or named vector) indicate if text explaining arrow should be displayed, use |
returnRatio |
(logical) return ratio |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Details
#' @details The argument addText
also allows specifying a fixed position when using addText=c(loc="bottomleft")
, also bottomright, topleft, topright, toleft and toright may be used.
In this case the elemts side
and adjust
will be redefined to accomodate the text in the corner specified.
Value
This function plots only an arrow onto current plotting device (and some explicative text), if returnRatio=TRUE
also returns numeric value for extracted ratio
See Also
Examples
plot(rnorm(20,1.5,0.1), 1:20)
foldChangeArrow(FC=1.5)
Histogram (version by WR)
Description
This function proposes a few special tweaks to the general hist
function :
In a number of settings data are treated and plotted as log-data. This function allows feeding directly log2-data and displaying the x-axis
(re-translated) in linear scale (see argument isLog
).
The default settings allow making (very) small histograms ('low resolution'), which may be used as a rough overview of bandwidth and distribution of values in dat
.
Similar to hist
, by changing the parameters nBars
and/or breaks
very 'high resolution' histograms can be produced.
By default it displays n per set of data (on the top of the figure).
Note that the argument for (costom) title main
is now called tit
.
Usage
histW(
dat,
fileName = "histW",
output = "screen",
nBars = 8,
breaks = NULL,
tit = NULL,
subTi = NULL,
xLab = NULL,
yLab = NULL,
las = NULL,
xcex = 0.7,
imgxSize = 900,
useCol = NULL,
useBord = NULL,
isLog = TRUE,
cexSubTi = NULL,
cropHist = TRUE,
parDefault = TRUE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(matrix, list or data.frame) data to plot |
fileName |
(character) name of file for saving graphics |
output |
(character, length=1) options for output on 'screen' or saving image in various formats (set to 'jpg','png' or 'tif') |
nBars |
(integer) number of bars in histogram (default for 'low resolution' plot to give rough overview) |
breaks |
(integer) for (partial) compatibility with hist() : use only for number of breaks (or 'FD'), gets priority over 'nBars' |
tit |
(character) custom title |
subTi |
(character) may be |
xLab |
(character) custom x-axes label |
yLab |
(character) custom y-axes label |
las |
(integer) optional fixed text orientation of x-axis numbers : use 1 for horizontal and 2 for perpendicular, see also |
xcex |
(numeric) cex-type expansion factor for x-axis numbers, see also |
imgxSize |
(integer) width of image when saving to file, see also |
useCol |
(character or integer) custom colors, see also |
useBord |
(character) custom histogram elements border color, see also |
isLog |
(logical) for lin scale signal intensity values where repesentation needs log, assume log2 if |
cexSubTi |
(numerical) subtitle size (expansion factor cex), see also |
cropHist |
(logical) -not implemented yet- designed for cutting off bars with very low ('insignificant') values |
parDefault |
(logical) to automatic adjusting par(marg=,cex.axis=0.8), see also |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
This function produces a histogram type graphic (to the ccurrent graphical device)
See Also
Examples
set.seed(2016); dat1 <- round(c(rnorm(200,6,0.5),rlnorm(300,2,0.5),rnorm(100,17)),2)
dat1 <- dat1[which(dat1 <50 & dat1 > 0.2)]
histW(dat1, br="FD", isLog=FALSE)
histW(log2(dat1), br="FD", isLog=TRUE)
## quick overview of distributions
layout(partitionPlot(4))
for(i in 1:4) histW(iris[,i], isLog=FALSE, tit=colnames(iris)[i])
Display Numeric Content Of Matrix As Image
Description
To get a quick overview of the spatial distribution of smaller data-sets it may be useful to display numeric values as colored boxes.
Such an output may also be referred to as heatmap (note that the term 'heatmap' is frequently associated with graphical display of hierarchcal clustering results).
The function image
provides the basic support to do so (ie heatmap without rearranging rows and columns by clustering).
To do this more conveniently, the function imageW
offers additional options for displaying row- and column-names or displaying NA-values as custom-color.
Usage
imageW(
data,
latticeVersion = FALSE,
transp = TRUE,
NAcol = "grey95",
tit = NULL,
rowNa = NULL,
colNa = NULL,
xLab = NULL,
yLab = NULL,
xLabVal = NULL,
yLabVal = NULL,
las = 2,
col = NULL,
nColor = 9,
balanceCol = TRUE,
gridCol = "grey75",
gridLty = 1,
centColShift = 0,
cexDispl = NULL,
panel.background.col = "white",
supLat = list(),
rotXlab = 0,
rotYlab = 0,
cexTit = 1.6,
cexAxs = NULL,
cexXlab = 0.7,
cexYlab = 0.9,
showValues = FALSE,
Xtck = 0,
Ytck = 0,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
data |
(matrix or data.frame) main input |
latticeVersion |
(logical) use lattice for plotting (this will include a color-legend) |
transp |
(logical) decide if data should get transposed (if |
NAcol |
(character or integer) custom color for NA-values, default is light grey |
tit |
(character) custom figure title |
rowNa |
(character) optional custom rownames |
colNa |
(character) optional custom colnames |
xLab |
(character, length=1) optional custom text for x-axis label (so far fixed color & fontsiez) |
yLab |
(character, length=1) optional custom text for y-axis label |
xLabVal |
(character) optional custom text for x-axis 'values' (multiple values/names instead of counters, replaces argument |
yLabVal |
(character) optional custom text for y-axis 'values' (multiple values/names instead of counters, replaces argument |
las |
(numeric) style of axis labels (see also |
col |
(character or integer) colors; in lattice version 2 or 3 color-names to define central- and end-points of gradient (starting with color for lowest values, optional central color and color for highest values), default is 60 shades 'RdYlBu' RColorBrewer, if 'heat.colors' use heat.colors in min 15 shades |
nColor |
(integer, only used in lattice version) number of color-blocks in color gradient (made based on central- and end-points from |
balanceCol |
(logical, only used in lattice version) if |
gridCol |
(character, only used in lattice version) define color of grid |
gridLty |
(integer, only used in lattice version) define line-type of grid (see also lty |
centColShift |
(integer, only used in lattice version) shift central (default grey) color element for negative scale up or down (ie increase or reduce number of color-blocks for negatve values), used for correcting automatic scaling rounding issues to ensure the central elements captures 0 |
cexDispl |
(numeric, length=1, only used in lattice version) define cex size for displaying (rounded) values in plot, set to |
panel.background.col |
(character, only used in lattice version) |
supLat |
(list, only used in lattice version) additional arguments/parameters passed to |
rotXlab |
(numeric, 0 - 360, lattice version only) control rotation of x-axis values |
rotYlab |
(numeric, 0 - 360, lattice version only) control rotation of y-axis values |
cexTit |
(numeric) cex-like expansion factor for title (see also |
cexAxs |
(numeric) cex-like expansion factor for x- and y-axis text/labels (see also |
cexXlab |
(numeric) cex-like expansion factor for x-axis labels (see also |
cexYlab |
(numeric) cex-like expansion factor for y-axis labels (see also |
showValues |
(logical or numeric) optional display of values from data, if contains eg |
Xtck |
(numeric or logical) expansion factor for length of tick-marks on x-axis (default=0 for no tick-marks) |
Ytck |
(numeric or logical) expansion factor for length of tick-marks on y-axis |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Details
This function allows two modes of operation : 1) plotting using standard R -graphics or 2) using the framework of grid- and lattice-graphics (since version 1.2.6).
The latter version allows integrating a legend for the color-scale and adding grid-lines, rotation of axis-labels or removing tick-marks.
Please note that sometimes the center-color segment may not end up directly with the center of the scale, in this case you may adjust using the argument centColShift=-1
Value
This function plots in image (to the current graphical device) as image
does
See Also
image
, for the lattice version levelplot
, heatmaps including hierarchical clustering heatmap
or heatmap.2
from package gplots
Examples
imageW(iris[1:40,1:4], transp=FALSE, tit="Iris (head)")
imageW(iris[1:20,1:4], latticeVersion=TRUE, col=c("blue","red"),
rotXlab=45, yLab="Observation no", tit="Iris (head)")
Add histogram to existing plot
Description
Add histogram at pleace of legend using colors from 'colorRamp'.
Usage
legendHist(
x,
colRamp = NULL,
location = "bottomright",
legTit = NULL,
cex = 0.7,
srt = 67,
offS = NULL,
border = TRUE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
x |
(numeric) main input/component of plot |
colRamp |
(character or integer) set of colors, default is rainbow-like |
location |
(character) for location of histogram inside existing plot (may be 'br','bl','tl','tr','bottomright', 'bottomleft','topleft','topright') |
legTit |
(character, length=1) optional title for histogram-insert |
cex |
(numeric) expansion factor (see also |
srt |
(numeric) angle for histogram text labels (90 will give vertical label) (see also |
offS |
( |
border |
(logical) decide of draw gray rectangle or not around legend |
silent |
(logical) suppress messages |
debug |
(logical) display additional messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
This function produces a histogram on the current plottig device
Examples
dat <- rnorm(90); plot(dat)
legendHist(dat, col=1:5)
Create mouse-over interactive html-pages (with links)
Description
This function allows generating html pages with interactive mouse-over to display information for the points of the plot and www-links when clicking based on embedded png file.
Basically, an html page will be generated which contains a call to display to an image file specified in pngFileNa
and in the body below pixel-coordinated will be
given for disply of information at mouse-over and embedded links.
Usage
mouseOverHtmlFile(
myCoor,
pngFileNa,
HtmFileNa = NULL,
mouseOverTxt = NULL,
displSi = c(800, 600),
colNa = NULL,
tit = "",
myHtmTit = "",
myComment = NULL,
textAtStart = NULL,
textAtEnd = NULL,
pxDiam = 5,
addLinks = NULL,
linkExt = NULL,
htmlExt = "htm",
callFrom = NULL,
silent = FALSE,
debug = FALSE
)
Arguments
myCoor |
(matrix or data.frame) with initial x&y coordinates of points for plot; with IDs (1st column !!) & coordinates (2nd & 3rd col), data for mouse-over & link (4th & 5th); NOTE : if 'colNa' NOT given, colnames of 'myCoor' will be inspected & filtered (columns of non-conform names may get lost) !!! Associated with (already existing) figure file 'pngFileNa' and make html page where points may be indicated by mouse-over |
pngFileNa |
(character, length=1) filename for complementary png figure (must already exist) |
HtmFileNa |
(character, length=1) filename for html file produced |
mouseOverTxt |
(character, length=1) text for interactive mouse-over in html, if |
displSi |
(integer, length=2) size of image ('pngFileNa') at display in html (width,height), see also |
colNa |
(character) if not |
tit |
(character) title to be displayed on top of figure |
myHtmTit |
(character) title of Html page; 'htmlExt' .. checking and correcting filename-extension (only main Html page) |
myComment |
(character) modify comment embedded in html-document |
textAtStart |
(character) text in html before figure |
textAtEnd |
(character) text in html after figure |
pxDiam |
(integer, length=1) diameter for mouse-over tip to appear (single val or vector), simpler version/solution than with 'Tooltip' package |
addLinks |
(character) for clickable links, either 1) vector of links or 2) single character-chain to be used for pasting to rownames (eg https://www.uniprot.org/uniprot/)
or 3) |
linkExt |
(character) if specified : links will get specified ending, define as |
htmlExt |
(character, length=1) extension used when making html files |
callFrom |
(character) allow easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
Details
Basically theer are two options for defining the path to the image embedded : 1) Absolute path : I turn you can moove the html to different locations, as long as it still can see the png-file the image can be displayed. However, this may not be any more the case when the html file is sent to another person. If the png-file is accessible as url, it should be easily visible. 2) Relative path : The simplest case would be to give only the file-name with no path at all, thus the png-file is supposed to be in the same directory as the html-file. This option is very 'transportable'. Basically the same applies to the clickable links which may be provided. In high-throughput biology one typically points here to data-bases accessible over the internet where urls to specific pages. With UniProt such links can easily be constructed when using protein identifiers as rownames.
Value
plot
See Also
convertPlotCoordPix
; use htmlSpecCharConv
to convert special characters for proper html display
Examples
## Note, this example writes files to R's tempdir,
## Otherwise, if you simply work in the current directory without spcifying paths you'll
## get an html with relatove paths, which simply needs the png file in the same path
df1 <- data.frame(id=letters[1:10], x=1:10, y=rep(5,10), mou=paste("point",letters[1:10]),
link=file.path(tempdir(),paste0(LETTERS[1:10],".html")), stringsAsFactors=FALSE)
## here we'll use R's tempdir, later you may want to choose other locations
pngFile <- file.path(tempdir(),"test01.png")
png(pngFile,width=800, height=600,res=72)
## here we'll just plot a set of horiontal points ...
plot(df1[,2:3],las=1,main="test01")
dev.off()
## Note : Special characters should be converted for display in html pages during mouse-over
library(wrMisc)
df1$mou <- htmlSpecCharConv(df1$mou)
## Let's add the x- and y-coordiates of the points in pixels to the data.frame
df1 <- cbind(df1,convertPlotCoordPix(x=df1[,2],y=df1[,3],plotD=c(800,600),plotRes=72))
head(df1)
## Now make the html-page allowing to display mouse-over to the png made before
htmFile <- file.path(tempdir(),"test01.html")
mouseOverHtmlFile(df1,pngFile,HtmFileNa=htmFile,pxDiam=15,
textAtStart="Points in the figure are interactive to mouse-over ...",
textAtEnd="and/or may contain links")
## We still need to make some toy links
for(i in 1:nrow(df1)) cat(paste0("point no ",i," : ",df1[i,1]," x=",df1[i,2]," y=",
df1[i,3]), file=df1$link[i])
## Now we are ready to open the html file using any browser
## Not run:
browseURL(htmFile)
## End(Not run)
Make matrix for layout to partition plotting area
Description
This function proposes a matrix for use with layout
to arrange given number of plots to be placed on a page/plotting area.
In certain instances the proposed layout may accomodate slightly more plots, eg nFig=5
can not be arranged in 2 or 3 columns without an empty last spot.
Portrait (vertival) or lanscape (horizontal) layout proportions can be chosen. The user can also impose a given number of columns.
Usage
partitionPlot(
nFig,
returnMatr = TRUE,
horiz = TRUE,
figNcol = NULL,
byrow = TRUE,
silent = TRUE,
debug = FALSE,
callFrom = NULL
)
Arguments
nFig |
(integer) number of figures to be arrages on single plotting surface (ie window or plotting device) |
returnMatr |
(logical) will return matrix ready for use by |
horiz |
(logical) will priviledge horizontal layout if |
figNcol |
(integer) optional number of columns |
byrow |
(logical) toggle if output is in order of rows or columns (equivament to |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Value
matrix for use with layout
or (if returnMatr=FALSE
numeric vector with number of segements in x- an y-axis)
See Also
Examples
partitionPlot(5); partitionPlot(14,horiz=TRUE)
Separate and plot data by 2 groups
Description
Plot series of data as membership of 2 different grouping vectors (eg by grp=patient and grp2=age-group).
Usage
plotBy2Groups(
dat,
grp,
grp2 = NULL,
col = NULL,
pch = NULL,
tit = NULL,
cex = 2,
lwd = 0.5,
lty = 2,
yLab = NULL,
cexLab = NULL,
sepLines = FALSE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(numeric) main data (may contain |
grp |
(character or factor) grouping of columns of 'dat', eg replicate association |
grp2 |
(character or factor) aadditional/secondary grouping of columns of 'dat' |
col |
(character or integer) use custom colors, see also |
pch |
(integer) symbol to mark group-center (see also |
tit |
(character) custom title |
cex |
(numeric) expansion factor for text (see also |
lwd |
(integer) line-width (see also |
lty |
(integer) line-type (see also |
yLab |
(character) custom y-axis label |
cexLab |
(numeric) expansion factor for labels: 1st value for main groups ( |
sepLines |
(logical) optional drawing of horizontal lines aiming to separate groups (in analogy to support vectors) |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
list with $annot
, $abund
for initial/raw abundance values and $quant
with final normalized quantitations, or returns data.frame with annot and quant if separateAnnot=FALSE
See Also
Examples
set.seed(2020); rand1 <- round(runif(12),2) +rep(1:3,each=4)
plotBy2Groups(rand1, gl(2,6,labels=LETTERS[5:6]), gl(4,3,labels=letters[1:4]))
Plot linear regression and confidence interval of regression
Description
This function provides help to display a series of bivariate points given in 'dat' (multiple data formats possible), to model a linear regression and plot the results. Furthermore, a confidence interval to the regression may be added to the plot, regression parameters get be displayed.
Usage
plotLinReg(
dat,
indepVarLst = NULL,
dependVar = NULL,
cusTxt = NULL,
regrLty = 1,
regrLwd = 1,
regrCol = 1,
confInt = 0.95,
confCol = NULL,
xLab = NULL,
yLab = NULL,
xLim = NULL,
yLim = NULL,
tit = NULL,
nSignif = 3,
col = 1,
pch = 1,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(numeric, data.frame or list) main data to plot/inspect. If numeric 'dat' will be used as dependent variable (y-data)
together with numeric 'indepVarLst' (independent variable); if list, then list-elments |
indepVarLst |
(character) if 'dat' is list, this designes the list element with the explanatory or independent variable (ie the variable used for explaining, typically x-data) |
dependVar |
(character) if 'dat' is list, this designes the list element with dependent variable (ie the variable to be explained, typically y-data) to test |
cusTxt |
(character) optional custom text to display in subtitle (instead of p-value to H0: slope.regression=0) |
regrLty |
(integer) line type for regression |
regrLwd |
(integer) line width for regression |
regrCol |
(integer) color of regression-line |
confInt |
(numeric, between 0 and 1) the probabiity alpha for the regression interval, if |
confCol |
(character) (background) color for confidence-interval |
xLab |
(character) optional custom x-label |
yLab |
(character) optional custom y-label |
xLim |
(numeric) custom limit for x-axis (see also |
yLim |
(numeric) custom limit for y-axis (see also |
tit |
(character) optional title |
nSignif |
(integer) number of significant digits for regression parameters in subtitle of plot |
col |
(integer or character) custom color for points (choose |
pch |
(integer or character) type of symbol for points (see also |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Value
This functions simply plots (to the current graphical devce); an invisible list containing $data, $linRegr, $confInterval (if calculated) may be returned, too
See Also
exclExtrValues
for decision of potential outliers; hist
, vioplotW
Examples
set.seed(2020); dat1 <- rep(1:6,each=2) +runif(12,0,1)
plotLinReg(dat1, gl(6,2))
## extract elements out of list :
li2 <- list(aa=gl(5,2), bb=dat1[1:10])
plotLinReg(li2, indepVarLst="aa", dependVar="bb")
PCA plot with bag-plot to highlight groups
Description
This function allows to plot principal components analysis (PCA), with options to show center and potential outliers for each of the groups (columns of data). The main points of this implementation consist in offering bagplots to highlight groups of columns/samples and support to (object-oriented) output from limma and wrProteo.
Usage
plotPCAw(
dat,
sampleGrp,
tit = NULL,
useSymb = c(21:25, 9:12, 3:4),
center = TRUE,
scale. = TRUE,
colBase = NULL,
useSymb2 = NULL,
cexTxt = 1,
cexSub = 0.6,
displBagPl = TRUE,
outCoef = 2,
getOutL = FALSE,
showLegend = TRUE,
nGrpForMedian = 6,
pointLabelPar = NULL,
rowTyName = "genes",
rotatePC = NULL,
suplFig = TRUE,
callFrom = NULL,
silent = TRUE,
debug = FALSE
)
Arguments
dat |
(matrix, data.frame, MArrayLM-object or list) data to plot. Note: |
sampleGrp |
(character or factor) should be factor describing groups of replicates, NAs are not supported |
tit |
(character) custom title |
useSymb |
(integer) symbols to use (see also |
center |
(logical or numeric) decide if variables should be shifted to be zero centered, argument passed to |
scale. |
(logical or numeric) decide if scaling to obtain unit variance, argument passed to |
colBase |
(character or integer) use custom colors |
useSymb2 |
(integer) symbol to mark group-center (no mark of group-center if default NULL) (equivalent to |
cexTxt |
(integer) expansion factor for text (see also |
cexSub |
(integer) expansion factor for subtitle line text (see also |
displBagPl |
(logical) if |
outCoef |
(numeric) parameter for defining outliers, see |
getOutL |
(logical) return outlyer samples/values |
showLegend |
(logical or character) toggle to display legend, if character it designes the location within the plot to display the legend ('bottomleft','topright', etc..) |
nGrpForMedian |
(integer) decide if group center should be displayed via its average or median value: If group has less than 'nGrpForMedian' values, the average will be used, otherwise the median; if |
pointLabelPar |
(character) define formatting for optional labels next to points in main figure (ie PC1 vs PC2); may be |
rowTyName |
(character) for subtitle : specify nature of rows (genes, proteins, probesets,...) |
rotatePC |
(integer) optional rotation (by -1) for fig&ure of the principal components specified by index |
suplFig |
(logical) to include plots vs 3rd principal component (PC) and Screeplot |
callFrom |
(character) allow easier tracking of messages produced |
silent |
(logical) suppress messages |
debug |
(logical) display additional messages for debugging |
Details
One motivation for this implementation of plotting PCA was to provide a convenient way for doing so with of MArrayLM-objects or lists as created by limma and wrProteo.
Another motivation for this implementation come from integrating the idea of bag-plots to better visualize different groups of points (if they can be organized so beforehand as distinct groups) : The main body of data is shown as 'bag-plots' (a bivariate boxplot, see Bagplot) with different transparent colors to highlight the core part of different groups (if they contain more than 2 values per group). Furthermore, group centers are shown as average or median (see 'nGrpForMedian') with stars & index-number (if <25 groups).
Layout is automatically set to 2 or 4 subplots (if plotting more than 2 principal components makes sense).
Note : This function uses prcomp
for calculating Eigenvectors and principal components, with default center=TRUE
and scale.=FALSE
(different to princomp()
. which standardizes by default).
This way the user has to option to intervene on arguments center
and scale.
. However, this should be done with care.
Note: NA
-values cannot (by definition) be processed by (any) PCA - all lines with any non-finite values/content (eg NA
) will be omitted !
Note : Package RColorBrewer may be used if available.
For more options with PCA (and related methods) you may also see also the package FactoMineR which provides a very wide spectrum of possibiities, in particular for combined numeric and categorical data.
Value
This function make a plot and may retiurn an optional matrix of outlyer-data (depending on argument getOutL
)
See Also
prcomp
(used here for the PCA underneith) , princomp
, see the package FactoMineR for multiple plotting options or ways of combining categorical and numeric data
Examples
set.seed(2019); dat1 <- matrix(round(c(rnorm(1000), runif(1000,-0.9,0.9)),2),
ncol=20, byrow=TRUE) + matrix(rep(rep(1:5,6:2), each=100), ncol=20)
biplot(prcomp(dat1)) # traditional plot
(grp = factor(rep(LETTERS[5:1],6:2)))
plotPCAw(dat1, grp)
x-y plot with 2 legends
Description
This is a modified version of plot
for 2-dimensional data,
allowing to choose symbols and colors of points according to two additional columns of dat
.
Usage
plotW2Leg(
dat,
useCol = c("logp", "slope", "medAbund", "startFr"),
tit = NULL,
subTi = NULL,
subCex = 0.9,
pch = 21:25,
xlim = NULL,
ylim = NULL,
xlab = NULL,
ylab = NULL,
ablines = NULL,
legendloc = "topright",
txtLegend = NULL,
histLoc = "bottomleft",
legHiTi = NULL,
silent = TRUE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(matrix or data.frame) main input |
useCol |
(character or integer) columns form |
tit |
(character) optional custom title |
subTi |
(character) optional custom subtitle |
subCex |
(numeric) cex-like expansion factor for subtitle (see also |
pch |
(integer) symbols to use for plotting (see also |
xlim |
(numeric, length=2) x- axis limits (see also |
ylim |
(numeric, length=2) y- axis limits (see also |
xlab |
(character) custom x-axis label |
ylab |
(character) custom x-axis label |
ablines |
(list) optional horzontal and/or vertical gray dashed guide-lines |
legendloc |
(character) location of legend (of symbols) |
txtLegend |
(character) optional label for legend (of symbols) |
histLoc |
(character) location of histomgram-legend (of 3rd column of |
legHiTi |
(character) optional title for histomgram-legend |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Value
graphical output only
See Also
(standard plots) plot
from the package base
Examples
x1 <- cbind(x=c(2,1:7), y=8:1 +runif(8), grade=rep(1:4,2))
plotW2Leg(x1,useCol=c("x","y","y","grade"))
Plot profiles according to CLustering
Description
This function was made for visualuzing the result of clustering of a numeric vector or clustering along multiple columns of a matrix.
The data will be plotted like a reglar scatter-plot, but some extra space is added to separate clusters and dashed lines highlight cluster-borders.
If no mean/representative value is spacified, a geometric mean will be calculated along all columns of dat
.
In case dat
has multiple columns, a legend and a representative (default geometric mean) dashed grey line will be displayed.
Usage
profileAsClu(
dat,
clu,
meanD = NULL,
tit = NULL,
col = NULL,
pch = NULL,
xlab = NULL,
ylab = NULL,
meCol = "grey",
meLty = 1,
meLwd = 1,
cex = NULL,
cexTit = NULL,
legLoc = "bottomleft",
silent = TRUE,
debug = FALSE,
callFrom = NULL
)
Arguments
dat |
(matrix or data.frame) main input with data to plot as points |
clu |
(numeric or character) clustering results; if length=1 and character this term will be understood as colum-name with cluster-numbers from |
meanD |
(numeric) mean/representative of multiple series for display as lines; if length=1 and character this term will be understood as columname with cluster-numbers from |
tit |
(character) optional custom title |
col |
(character) custom colors |
pch |
(integer) custom plotting symbols (see also |
xlab |
(character) custom x-axis label |
ylab |
(character) custom y-axis label |
meCol |
(character) color for (dashed) line of mean/representative values |
meLty |
(integer) line-type line of mean/representative values (see also |
meLwd |
(numeric) line-width line of mean/representative values (see also |
cex |
(numeric) cex-like expansion factor (see also |
cexTit |
(numeric) cex-like expansion factor for title (see also |
legLoc |
(character) legend location |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Value
This functin returns a plot only
Examples
set.seed(2020); dat1 <- runif(12)/2 + rep(6:8, each=4)
dat1Cl <- stats::kmeans(dat1, 3)$cluster
dat1Cl <- 5- dat1Cl # bring cluster-numbers in ascending form
dat1Cl[which(dat1Cl >3)] <- 1 # bring cluster-numbers in ascending form
profileAsClu(dat1, clu=dat1Cl)
Staggered Chart for Ploting Counts to Multiple Leveles of the Threshold used
Description
The basic idea of this plot is to show how counts data change while shifting a threshold-criterium.
At each given threshold the counts are plotted like a staggered bar-chart (or staggered histogram) but without vertical lines to illustrated the almost continuous change
from preceedig or following threshold-value.
Initially this plot was designed for showing the absolute count-data used when constructing roc-curves (eg using
the function summarizeForROC
of package wrProteo ).
The main input should furnish the panel of threshold as one column and the coresponding counts data as min 2 columns.
The threshold coumns gets specified using the argument threColumn
, the counts-data may either be specified using argument countsCol
or be searched using grep
using column-names containing the text given in argument varCountNa
with may be combined with
a fixed preceeding part given as argument fixedCountPat
.
Usage
staggerdCountsPlot(
roc,
threColumn = 1,
countsCol = NULL,
fixedCountPat = "n.pos.",
varCountNa = NULL,
sortAscending = TRUE,
vertLine = NULL,
col = NULL,
tit = NULL,
logScale = FALSE,
las.alph = 2,
displMaxSpec = TRUE,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
roc |
(numeric matrix or data.frame) main input: one column with thresholds and multiple columns of assoicated count data |
threColumn |
(integer or character) to specify the column with threshold-data, in typica proteomics benchmark studies this would be 'alph' (for the statistical test threshold) |
countsCol |
(character of integer, min length=2) choice of column(s) with count-data in 'roc' to be used for display, if not |
fixedCountPat |
(character) optional pattern to help identifying counts-data: if not |
varCountNa |
(character) alternative way to select the columns from 'roc': searched using |
sortAscending |
(logical) decide if data should be sorted ascending or descending |
vertLine |
(numeric) for optional vertical line, typically used to highlight alpha 0.05 |
col |
(character) custom colors, see also |
tit |
(character) cutom title |
logScale |
(logical) display threshld values (x-axis) on log-scale |
las.alph |
(numeric) orientation of label of alpha-cutoff, see also |
displMaxSpec |
(logical) display on right side of figure max count value of contributing group species |
silent |
(logical) suppress messages |
debug |
(logical) additonal messages for debugging |
callFrom |
(character) allows easier tracking of messages produced |
Details
Investigate count data prepared for plotting ROC curves : cumulative counts plot by species (along different statistical test thresholds). Note : Package wrProteo may be used to prepare input (matrix of ROC data).
Value
plot only
See Also
ecdf
, for preparing input to ROC: function summarizeForROC
in package wrProteo
Examples
set.seed(2019); test1 <- cbind(a=sample.int(n=7,size=50,repl=TRUE),
b=sample.int(n=11,size=50,repl=TRUE),c=sample.int(n=18,size=50,repl=TRUE))
test1 <- cbind(alph=seq(0,1,length.out=50),a=cumsum(test1[,1]),b=cumsum(test1[,2]),
c=cumsum(test1[,3]))
staggerdCountsPlot(test1,countsCol=c("a","b","c"))
## example below requires the package wrProteo
Violin-Plots Version W
Description
This function allows generating Violin plots) using a variety of input formats and offers additional options for colors.
Main input may be multiple vectors, a matrix or list of multiple data-elements (entries may be of variable length),
individual colors for different sets of data or color-gradients can be specified, and the display of n per set of data was integtated
(based on an inspiration from the discussion 'Removing-NAs-from-dataframe-for-use-in-Vioplot' on the forum Nabble).
It is also possible to plot pairwise half-violins for easier pairwise-comparisons (using halfViolin="pairwise"
).
Many arguments are kept similar to vioplot (here, the package vioplot
is not required/used).
Usage
vioplotW(
x,
...,
finiteOnly = TRUE,
removeEmpty = FALSE,
halfViolin = FALSE,
boxCol = "def",
hh = NULL,
xlim = NULL,
ylim = NULL,
nameSer = NULL,
cexNameSer = NULL,
horizontal = FALSE,
col = "rainbow",
border = "black",
xlab = NULL,
ylab = NULL,
cexLab = NULL,
cexAxis = NULL,
lty = 1,
pointCol = NULL,
cexPt = NULL,
tit = NULL,
las = 1,
lwd = 1,
rectCol = "black",
at = 0,
add = FALSE,
wex = NULL,
silent = FALSE,
debug = FALSE,
callFrom = NULL
)
Arguments
x |
(matrix, list or data.frame) data to plot, or first series of data |
... |
(numeric) additional sets of data to plot |
finiteOnly |
(logical) eliminate non-finite elements to avoid potential errors (eg when encountering |
removeEmpty |
(logical) omit empty series (or less than 4 finite numeric entries) of data from plot |
halfViolin |
(logical or character) decide with |
boxCol |
(character) decide if boxplot should be adde inside the violin, use "def" for default transparent grey |
hh |
(numeric, length <4) smoothing parameter (standard deviation to kernel function, if omited anormal optimal smoothing parameter is used); equivalent to argument |
xlim |
( |
ylim |
( |
nameSer |
(character) custom label for data-sets or columns (length must match number of data-sets) |
cexNameSer |
(numeric) size of individual data-series labels as cex-expansion factor (see also |
horizontal |
(logical) orientation of plot |
col |
(character or integer) custom colors or gradients like 'rainbow', 'grayscale', 'heat.colors', 'topo.colors', 'Spectral' or 'Paired', or you may use colors made by the package colorRamps |
border |
(character) custom color for figure border |
xlab |
(character) custom x-axis label |
ylab |
(character) custom y-axis label |
cexLab |
(numeric) size of axis labels as cex-expansion factor (see also |
cexAxis |
(numeric) size of numeric y-axis labels as cex-expansion factor (see also |
lty |
(integer) line-type for linear regression line (see also |
pointCol |
(character or numeric) display of median: color (defauly white) |
cexPt |
(numeric) display of median : size of point as cex-expansion factor (see also |
tit |
(character) custom title to figure |
las |
(integer) orientation of axis labels (see also |
lwd |
(integer) width of line(s) (see also |
rectCol |
(character) color of rectangle |
at |
(numeric) custom locoation of data-series names, ie the points at which tick-marks are to be drawn, will be passed to |
add |
(logical) add to existing plot if |
wex |
(integer) relative expansion factor of the violin |
silent |
(logical) suppress messages |
debug |
(logical) additional messages for debugging |
callFrom |
(character) allow easier tracking of messages produced |
Details
The (relative) width of the density-profiles ('Violins') may be manually adjusted using the parameter wex
which applies to all profiles drawn.
Note : Arguments have to be given with full names, lazy evaluation of arguments will not work properly with this function (since '...' is used to capture additional data-sets). Note : vioplot offers better options for plotting formulas
Value
This function plots a figure (to the current graphical device)
See Also
the package vioplot, sm
is used for the density estimation
Examples
set.seed(2013)
dat6 <- matrix(round(rnorm(300) +3, 1), ncol=6,
dimnames=list(paste0("li",1:50), letters[19:24]))
vioplotW(dat6)
## variable number of elements (each n is displayed)
dat6b <- apply(dat6, 2, function(x) x[which(x < 5)])
dat6b[[4]] <- dat6b[[4]][dat6b[[4]] < 4]
vioplotW(dat6b, col="Spectral")
vioplotW(dat6b, col="Spectral" ,halfViolin="pairwise", horizontal=TRUE)
vioplotW(dat6b, col="Spectral", halfViolin="pairwise", horizontal=FALSE)