The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
gaussplotR
provides functions to fit two-dimensional
Gaussian functions, predict values from such functions, and produce
plots of predicted data.
You can install gaussplotR
from CRAN via:
install.packages("gaussplotR")
Or to get the latest (developmental) version through GitHub, use:
::install_github("vbaliga/gaussplotR") devtools
The function fit_gaussian_2D()
is the workhorse of
gaussplotR
. It uses stats::nls()
to find the
best-fitting parameters of a 2D-Gaussian fit to supplied data based on
one of three formula choices. The function
autofit_gaussian_2D()
can be used to automatically figure
out the best formula choice and arrive at the best-fitting
parameters.
The predict_gaussian_2D()
function can then be used to
predict values from the Gaussian over a supplied grid of X- and Y-values
(generated here via expand.grid()
). This is useful if the
original data is relatively sparse and interpolation of values is
desired.
Plotting can then be achieved via ggplot_gaussian_2D()
,
but note that the data.frame
created by
predict_gaussian_2D()
can be supplied to other plotting
frameworks such as lattice::levelplot()
. A 3D plot can also
be produced via rgl_gaussian_2D()
(not shown here).
library(gaussplotR)
## Load the sample data set
data(gaussplot_sample_data)
## The raw data we'd like to use are in columns 1:3
<-
samp_dat 1:3]
gaussplot_sample_data[,
#### Example 1: Unconstrained elliptical ####
## This fits an unconstrained elliptical by default
<-
gauss_fit_ue fit_gaussian_2D(samp_dat)
## Generate a grid of X- and Y- values on which to predict
<-
grid expand.grid(X_values = seq(from = -5, to = 0, by = 0.1),
Y_values = seq(from = -1, to = 4, by = 0.1))
## Predict the values using predict_gaussian_2D
<-
gauss_data_ue predict_gaussian_2D(
fit_object = gauss_fit_ue,
X_values = grid$X_values,
Y_values = grid$Y_values,
)
## Plot via ggplot2 and metR
library(ggplot2); library(metR)
#> Warning: package 'ggplot2' was built under R version 4.0.5
#> Warning: package 'metR' was built under R version 4.0.5
ggplot_gaussian_2D(gauss_data_ue)
## And another example plot via lattice::levelplot()
library(lattice)
::levelplot(
lattice~ X_values * Y_values,
predicted_values data = gauss_data_ue,
col.regions = colorRampPalette(
c("white", "blue")
100),
)(asp = 1
)
#### Example 2: Constrained elliptical_log ####
## This fits a constrained elliptical, as in Priebe et al. 2003
<-
gauss_fit_cel fit_gaussian_2D(
samp_dat,method = "elliptical_log",
constrain_orientation = -1
)
## Generate a grid of x- and y- values on which to predict
<-
grid expand.grid(X_values = seq(from = -5, to = 0, by = 0.1),
Y_values = seq(from = -1, to = 4, by = 0.1))
## Predict the values using predict_gaussian_2D
<-
gauss_data_cel predict_gaussian_2D(
fit_object = gauss_fit_cel,
X_values = grid$X_values,
Y_values = grid$Y_values,
)
## Plot via ggplot2 and metR
ggplot_gaussian_2D(gauss_data_cel)
Should you be interested in having gaussplotR
try to
automatically determine the best choice of method
for
fit_gaussian_2D()
, the autofit_gaussian_2D()
function can come in handy. The default is to select the
method
that produces a fit with the lowest
rmse
, but other choices include rss
and
AIC
.
## Use autofit_gaussian_2D() to automatically decide the best
## model to use
<-
gauss_auto autofit_gaussian_2D(
samp_dat,comparison_method = "rmse",
simplify = TRUE
)
## The output has the same components as `fit_gaussian_2D()`
## but for the automatically-selected best-fitting method only:
summary(gauss_auto)
#> Model coefficients
#> A_o Amp theta X_peak Y_peak a b
#> 0.83 32.25 3.58 -2.64 2.02 0.91 0.96
#> Model error stats
#> rss rmse deviance AIC
#> 156.23 2.08 156.23 171
#> Fitting methods
#> method amplitude orientation
#> "elliptical" "unconstrained" "unconstrained"
Feedback on bugs, improvements, and/or feature requests are all welcome. Please see the Issues templates on GitHub to make a bug fix request or feature request.
To contribute code via a pull request, please consult the Contributing Guide first.
Baliga, VB. 2021. gaussplotR: Fit, predict, and plot 2D-Gaussians in R. Journal of Open Source Software, 6(60), 3074. https://doi.org/10.21105/joss.03074
GPL (>= 3) + file LICENSE
🐢
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.