Title: | Plot FTIR Spectra |
---|---|
Description: | The goal of 'PlotFTIR' is to easily and quickly kick-start the production of journal-quality Fourier Transform Infra-Red (FTIR) spectral plots in R using 'ggplot2'. The produced plots can be published directly or further modified by 'ggplot2' functions. L'objectif de 'PlotFTIR' est de démarrer facilement et rapidement la production des tracés spectraux de spectroscopie infrarouge à transformée de Fourier (IRTF) de qualité journal dans R à l'aide de 'ggplot2'. Les tracés produits peuvent être publiés directement ou modifiés davantage par les fonctions 'ggplot2'. |
Authors: | Philip Bulsink [aut, cre] , Ulrich Makanda [trl] (Translated documentation to French/Traduire la documentation en français), His Majesty the King in Right of Canada, as represented by the Minister of Natural Resources [cph] |
Maintainer: | Philip Bulsink <[email protected]> |
License: | GPL (>= 3) |
Version: | 1.0.0.9000 |
Built: | 2024-11-18 18:37:50 UTC |
Source: | https://github.com/nrcan/plotftir |
Add or subtract a constant (scalar) value to each data point in a FTIR spectra. Shifts the plot up or down on the y axis by the specified amount without any other change.
Ajoute ou soustrait une valeur constante (scalaire) à chaque point de données d'un spectre IRTF. Décale le tracé vers le haut ou vers le bas sur l'axe des y de la valeur spécifiée sans aucune autre modification.
add_scalar_value(ftir, value, sample_ids = NA) subtract_scalar_value(ftir, value, sample_ids = NA)
add_scalar_value(ftir, value, sample_ids = NA) subtract_scalar_value(ftir, value, sample_ids = NA)
ftir |
A data.frame of FTIR spectral data including spectra to be shifted. Un data.frame de données spectrales IRTF comprenant les spectres à décalés. |
value |
The numeric value to add or subtract. Le valeur numerique d'ajute ou soustrait. |
sample_ids |
A vector of sample IDs to be shifted. All sample IDs must be present in the 'ftir' data.frame. If modifying all spectra, provide NA or NULL. Un vecteur d'identifiants d'échantillons dont la moyenne doit être décalée. Tous les identifiants des échantillons doivent être présents dans le data.frame 'ftir'. Si modifiez tous les spectres, indiquez NA ou NULL. |
A data.frame containing the adjusted FTIR spectra.
Un data.frame contenant les spectres IRTF ajustee.
# Add 0.1 to each spectra in biodiesel add_scalar_value(biodiesel, 0.1) # Subtract 0.05 from biodiesel_0 and biodiesel_0_25 subtract_scalar_value(biodiesel, 0.05, sample_ids = c("biodiesel_0", "biodiesel_0_25"))
# Add 0.1 to each spectra in biodiesel add_scalar_value(biodiesel, 0.1) # Subtract 0.05 from biodiesel_0 and biodiesel_0_25 subtract_scalar_value(biodiesel, 0.05, sample_ids = c("biodiesel_0", "biodiesel_0_25"))
Add a vertical line marker, at a given wavenumber, to an FTIR plot, and label at the top of the plot with a provided text (or by default the wavenumber of the marker). This is useful for noting important wavenumbers.
This function can be called repeatedly. Note that older labels will be covered by newer labels if they overlap.
Ajoutez un marqueur de ligne verticale, à un nombre d'ondes donné, à un tracé FTIR, et l'étiquette en haut du tracé avec un texte fourni (ou par défaut le nombre d'ondes du marqueur). Cette fonction est utile pour noter les nombres d'ondes importants. Cette fonction peut être appelée plusieurs fois.
Notez que les vieux labels seront couverts par les nouveaux s'ils se chevauchent.
add_wavenumber_marker( ftir_spectra_plot, wavenumber, text = NULL, line_aesthetics = NULL, label_aesthetics = NULL )
add_wavenumber_marker( ftir_spectra_plot, wavenumber, text = NULL, line_aesthetics = NULL, label_aesthetics = NULL )
ftir_spectra_plot |
A plot generated by Un tracé généré par |
wavenumber |
the wavenumber at which the marker should be placed. le nombre d'ondes auquel le marqueur doit être placé. |
text |
The text of the label over the marker (optional). If no text is provided, the label will show the wavenumber (rounded to the nearest whole number). Le texte de l'étiquette au-dessus du marqueur (facultatif). Si aucun texte n'est fourni, l'étiquette indiquera le nombre d'ondes (arrondi au nombre entier le plus proche). |
line_aesthetics |
A named Une |
label_aesthetics |
A named Une |
the FTIR plot as a ggplot2 object, with a marker added at the specified wavenumber.
le tracé IRTF en tant qu'objet ggplot2, avec un marqueur ajouté au nombre d'ondes spécifié.
See vignette("ggplot2-specs")
for more information on setting
aesthetics.
Voir vignette("ggplot2-specs")
pour plus d'informations sur la définition
de l'esthétique.
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot biodiesel_plot <- plot_ftir(biodiesel) # Add a marker at 1742 cm^-1 for the carbonyl C=O Stretch p <- add_wavenumber_marker(biodiesel_plot, 1742, text = "C=O Stretch") p # Add a second marker and use a dashed line for the C-H aliphatic stretch add_wavenumber_marker(p, 2920, text = "C-H Stretch", line_aesthetics = list("linetype" = "dashed") ) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot biodiesel_plot <- plot_ftir(biodiesel) # Add a marker at 1742 cm^-1 for the carbonyl C=O Stretch p <- add_wavenumber_marker(biodiesel_plot, 1742, text = "C=O Stretch") p # Add a second marker and use a dashed line for the C-H aliphatic stretch add_wavenumber_marker(p, 2920, text = "C-H Stretch", line_aesthetics = list("linetype" = "dashed") ) }
Calculates an average of two or more spectra.
Calcule la moyenne de deux spectres ou plus.
average_spectra(ftir, sample_ids = NA, average_id = "averaged_spectra")
average_spectra(ftir, sample_ids = NA, average_id = "averaged_spectra")
ftir |
A data.frame of FTIR spectral data including spectra to be converted. Un data.frame de données spectrales IRTF comprenant les spectres à convertir. |
sample_ids |
A vector of sample IDs to be averaged together. All sample
IDs must be present in the Un vecteur d'identifiants d'échantillons dont la moyenne doit être
calculée.. Tous les identifiants des échantillons doivent être présents
dans le data.frame |
average_id |
The name to be used as Le nom à utiliser en tant que |
A data.frame containing the averaged FTIR spectra, with sample_id
corresponding to the provided average_id
.
Un data.frame contenant les spectres IRTF moyennés, avec sample_id
correspondant à l'identifiant average_id
fourni.
# Calculate the average of biodiesel B5 spectra and the unknown spectra average_spectra(biodiesel, c("biodiesel_5_0", "biodiesel_B5", "diesel_unknown"))
# Calculate the average of biodiesel B5 spectra and the unknown spectra average_spectra(biodiesel, c("biodiesel_5_0", "biodiesel_B5", "diesel_unknown"))
This dataset holds example data from an 5-Bounce ZnSe Attenuated Total Reflectance (ATR) FTIR instrument collected for biodiesel analysis. The biodiesel samples were purchased calibration standards or available on the Canadian commercial market in 2024.
The samples included in this data set are: * 'biodiesel_0' A calibration sample with 0.0 * 'biodiesel_0_25' A calibration sample with 0.25 * 'biodiesel_0_50' A calibration sample with 0.50 * 'biodiesel_1_0' A calibration sample with 1.0 * 'biodiesel_2_5' A calibration sample with 2.5 * 'biodiesel_5_0' A calibration sample with 5.0 * 'biodiesel_7_5' A calibration sample with 7.5 * 'biodiesel_10_0' A calibration sample with 10.0 * 'biodiesel_B0_5' A commercially available sample with approximately 0.5 * 'biodiesel_B5' A commercially available sample with approximately 5.0 * 'diesel_unknown' A commercially available sample with unknown biodiesel content.
Ce donnée contient des exemples de données provenant d'un instrument IRTF à réflectance totale atténuée (RTA) ZnSe à 5 rebonds collectées pour l'analyse du biodiesel. Les échantillons de biodiesel étaient des étalons d'étalonnage achetés ou disponibles sur le marché commercial canadien en 2024.
Les échantillons inclus dans cet ensemble de données sont : * ‘biodiesel_0' Un échantillon d’étalonnage avec 0,0 * ‘biodiesel_0_25' Un échantillon d’étalonnage avec 0,25 * ‘biodiesel_0_50' Un échantillon d’étalonnage avec 0,50 * ‘biodiesel_1_0' Un échantillon d’étalonnage avec 1,0 * ‘biodiesel_2_5' Un échantillon d’étalonnage avec 2,5 * ‘biodiesel_5_0' Un échantillon d’étalonnage avec 5,0 * ‘biodiesel_7_5' Un échantillon d’étalonnage avec 7,5 * ‘biodiesel_10_0' Un échantillon d’étalonnage avec 10,0 * 'biodiesel_B0_5' Un échantillon disponible dans le commerce contenant environ 0,5 * 'biodiesel_B5' Un échantillon disponible dans le commerce contenant environ 5,0 * 'diesel_unknown' Un échantillon disponible dans le commerce avec une teneur en biodiesel inconnue.
biodiesel
biodiesel
The data is in a long format data.frame, ready for use, and with the following variables:
* 'wavenumber' wavenumber (x axis) value for each point. In units of wavenumbers (cm^-1). * 'absorbance' the absorbance of the sample at each specified wavenumber. * 'sample_id' the sample identity of the various included spectra.
Les données sont dans un format long data.frame, prêt à l'emploi, et avec les variables suivantes:
* ‘wavenmber' valeur du nombre d’onde (axe x) pour chaque point. En unités de nombres d'ondes (cm^-1). * ‘absorbance' l’absorbance de l'échantillon à chaque nombre d'onde spécifié. * ‘sample_id' identité d’échantillon des différents spectres inclus.
Converts 'ChemoSpec' data to that ready to use by 'PlotFTIR'.
Convertit les données 'ChemoSpec' en données prêtes à être utilisées par 'PlotFTIR'.
chemospec_to_plotftir(csdata)
chemospec_to_plotftir(csdata)
csdata |
'ChemoSpec' data to convert to 'PlotFTIR.' Données 'ChemoSpec' a convertir à 'PlotFTIR'. |
a data.frame compatible with 'PlotFTIR' functions
un data.frame compatible avec les fonctions 'PlotFTIR'.
[ChemoSpec::files2SpectraObject()] for import requirements, and [chemospec_to_plotftir()] for converting to 'PlotFTIR' format.
[ChemoSpec::files2SpectraObject()] pour les conditions d'importation, et [chemospec_to_plotftir()] pour la conversion au format 'PlotFTIR'.
if (requireNamespace("ChemoSpec", quietly = TRUE)) { # convert `chemospec` to PlotFTIR data data("SrE.IR", package = "ChemoSpec", envir = environment()) chemospec_to_plotftir(SrE.IR) }
if (requireNamespace("ChemoSpec", quietly = TRUE)) { # convert `chemospec` to PlotFTIR data data("SrE.IR", package = "ChemoSpec", envir = environment()) chemospec_to_plotftir(SrE.IR) }
Compress the lower energy region of a FTIR plot (on the x axis) to leave more space for the higher-energy region. This is commonly done for wavenumbers higher than 2000 cm^-1 as the more complex spectra at higher energy (lower wavenumber) is harder to see clearly.
Compressez la région de basse énergie d'un tracé d'IRTF (sur l'axe des x) pour laisser plus d'espace à la région de haute énergie. Cette opération généralement réalisée pour les nombres d'onde supérieurs à 2000 cm^-1, car les spectres plus complexes à houte énergie (nombre d'onde plus faible) sont plus difficiles à voir clairement.
compress_low_energy(ftir_spectra_plot, cutoff = 2000, compression_ratio = 2)
compress_low_energy(ftir_spectra_plot, cutoff = 2000, compression_ratio = 2)
ftir_spectra_plot |
A plot generated by [plot_ftir()] or [plot_ftir_stacked()]. Un tracé généré par [plot_ftir()] ou [plot_ftir_stacked()]. |
cutoff |
The wavenumber whereat those at lower energy will be compressed, but those above will be shown normally. Le nombre d'ondes où celles à faible énergie seront comprimées, mais celles au-dessus seront affichées normalement. |
compression_ratio |
A numeric value indicating the ratio by which to squeeze the data Une valeur numérique indiquant le rapport selon lequel compresser les données |
the FTIR plot as a ggplot2 object, with x axis compressed for some wavenumber range
le tracé IRTF en tant qu'objet ggplot2, avec l'axe des x comprimé pour une certaine gamme de nombres d'ondes
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot biodiesel_plot <- plot_ftir(biodiesel) # Compress below 2000 cm^-1 by a factor of 5 compress_low_energy(biodiesel_plot, cutoff = 2000, compression_ratio = 5) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot biodiesel_plot <- plot_ftir(biodiesel) # Compress below 2000 cm^-1 by a factor of 5 compress_low_energy(biodiesel_plot, cutoff = 2000, compression_ratio = 5) }
These functions allow for the convenient conversion between %Transmittance and Absorbance units for the Y axis.
Converting between %Transmittance and absorbance units for the Y axis is not a simple flipping of axis or inversion. Instead, the two are related by the following formulas:
and
.
Ces fonctions permettent une conversion pratique entre les unités %Transmittance et Absorbance pour l'axe Y. La conversion entre les unités %Transmittance et Absorbance pour l'axe Y n'est pas un simple retournement d'axe ou une inversion. Au lieu de cela, les deux sont liés par les formules suivantes :
and
absorbance_to_transmittance(ftir) transmittance_to_absorbance(ftir)
absorbance_to_transmittance(ftir) transmittance_to_absorbance(ftir)
ftir |
A data.frame of FTIR spectral data including column to be converted. Can't contain both 'absorbance' and 'transmittance' column as the receiving column would be overwritten Un data.frame de données spectrales IRTF incluant la colonne à convertir. Ne peut pas contenir les colonnes 'absorbance' et 'transmittance' car la colonne de réception serait écrasée. |
a data.frame of FTIR spectral data with conversion between absorbance or transmittance as requested. Note the original data column is removed since FTIR spectral data frames can't be fed into plotting functions with both transmittance and absorbance data included.
un data.frame de données spectrales IRTF avec conversion entre l'absorbance ou la transmittance comme demandé. Notez que la colonne de données d'origine est supprimée car les trames de données spectrales IRTF ne peuvent pas être introduites dans les fonctions de tracé avec les données de transmittance et d'absorbance incluses.
# Convert from absorbance to transmittance sample_spectra_transmittance <- absorbance_to_transmittance(sample_spectra) # Convert back to absorbance sample_spectra_absorbance <- transmittance_to_absorbance(sample_spectra_transmittance)
# Convert from absorbance to transmittance sample_spectra_transmittance <- absorbance_to_transmittance(sample_spectra) # Convert back to absorbance sample_spectra_absorbance <- transmittance_to_absorbance(sample_spectra_transmittance)
Get the sample IDs from a prepared plot. Useful if renaming in the plot legend.
Obtenez les ID d’échantillon à partir d’un tracé préparé. Utile si vous renommez dans la légende de le tracé
get_plot_sample_ids(ftir_spectra_plot)
get_plot_sample_ids(ftir_spectra_plot)
ftir_spectra_plot |
A plot generated by [plot_ftir()] or [plot_ftir_stacked()]. Un tracé généré par [plot_ftir()] ou [plot_ftir_stacked()]. |
A vector of factors corresponding to the sample IDs in the plot.
unvecteur de facteurs correspondant aux ID d'échantillon dans le tracé
[rename_plot_sample_ids()]
if (requireNamespace("ggplot2", quietly = TRUE)) { # Prepare a plot p <- plot_ftir(biodiesel) # Get the Sample IDs get_plot_sample_ids <- (p) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Prepare a plot p <- plot_ftir(biodiesel) # Get the Sample IDs get_plot_sample_ids <- (p) }
convert data from the 'ir' package to a structure that will work with 'PlotFTIR'.
convertir les données du paquet 'ir' en une structure qui fonctionnera avec 'PlotFTIR'.
ir_to_plotftir(ir_data, what = NA)
ir_to_plotftir(ir_data, what = NA)
ir_data |
data of class 'ir' from 'ir' package données de la classe 'ir' du paquet 'ir'. |
what |
which samples to convert to 'PlotFTIR' format. Defaults to all available spectra. les échantillons à convertir au format 'PlotFTIR'. Par défaut, tous les spectres disponibles |
a data.frame compatible with 'PlotFTIR' functions
un data.frame compatible avec les fonctions 'PlotFTIR'.
[ir::ir_get_spectrum()] for information on how ir passes out data.
if (requireNamespace("ir", quietly = TRUE)) { # Convert samples 1 & 4 to PlotFTIR format ir_to_plotftir(ir::ir_sample_data, c(1, 4)) }
if (requireNamespace("ir", quietly = TRUE)) { # Convert samples 1 & 4 to PlotFTIR format ir_to_plotftir(ir::ir_sample_data, c(1, 4)) }
A shortcut to basic plot legend modifications. The plot legend can be moved to different locations, justifieid in those locations, and/or changed from vertical to horizontal. By default, legends are positioned with 'position = "right"', 'justification = "center"', and 'direction = "vertical"'.
For more complex legend manipulation please perform using [ggplot::theme()] controls directly on the plot object. More information at [https://ggplot2.tidyverse.org/reference/theme.html](https://ggplot2.tidyverse.org/reference/theme.html#examples).
Un raccourci vers les modifications de base de la légende du tracé. La légende du tracé peut être déplacée à différents emplacements, justifiée à ces endroits et/ou modifiée de verticale à horizontale. Par défaut, les légendes sont positionnées avec 'position = "right"', 'justification = "center"' et 'direction = "vertical"'.
Pour une manipulation plus complexe de légende, veuillez utiliser les contrôles [ggplot::theme()] directement sur l'objet de tracé. Pour plus d'informations, voir [https://ggplot2.tidyverse.org/reference/theme.html](https://ggplot2.tidyverse.org/reference/theme.html#examples).
move_plot_legend( ftir_spectra_plot, position = NULL, justification = NULL, direction = NULL, legend_title_position = NULL )
move_plot_legend( ftir_spectra_plot, position = NULL, justification = NULL, direction = NULL, legend_title_position = NULL )
ftir_spectra_plot |
A plot generated by [plot_ftir()] or [plot_ftir_stacked()]. Un tracé généré par [plot_ftir()] ou [plot_ftir_stacked()]. |
position |
Position for the legend. One of '"none"', '"left"', '"right"', '"bottom"', or '"top"'. Position pour la légende. Un des '"none"', '"left"', '"right"', '"bottom"', ou '"top"'. |
justification |
Justification for the legend. One of '"top"', '"bottom"', '"center"', '"left"', or '"right"'. Justification de la légende. Un des '"top"', '"bottom"', '"center"', '"left"', ou '"right"'. |
direction |
Direction for the legend. One of '"horizontal"' or '"vertical"'. Direction de la légende. L'un des '"horizontal"' ou '"vertical"'. |
legend_title_position |
A position for the legend title relative to the legend items. One of '"top"', '"right"', '"left"', or '"bottom"'. Une position pour le titre de la légende par rapport aux éléments de légende. Un des '"top"', '"right"', '"left"', ou '"bottom"'. |
the FTIR plot as a ggplot2 object, with legend relocated as required.
le tracé IRTF en tant qu'objet ggplot2, avec la légende déplacée si nécessaire
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot p <- plot_ftir(sample_spectra) # Move legend to bottom: move_plot_legend(p, position = "bottom", direction = "horizontal") }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot p <- plot_ftir(sample_spectra) # Move legend to bottom: move_plot_legend(p, position = "bottom", direction = "horizontal") }
Normalizing spectra restricts the range of absorbance values from 0 to 1 inclusive. This function shifts and scales spectra to achieve this absorbance range. It can be applied to a whole spectral set or just one sample, and across the entire spectra or by normalizing within a wavenumber region. This function does not operate on transmittance data, it will return an error.
La normalisation des spectres restreint la gamme des valeurs d'absorbance de 0 à 1 inclus. Cette fonction décale et met à l'échelle les spectres pour atteindre cette gamme d'absorbance. Elle peut être appliquée à un ensemble de spectres ou à un seul échantillon, et sur l'ensemble des spectres ou en normalisant dans une région de nombre d'ondes. Cette fonction ne fonctionne pas sur les données de transmittance, elle renverra une erreur.
normalize_spectra(ftir, sample_ids = NA, wavenumber_range = NA)
normalize_spectra(ftir, sample_ids = NA, wavenumber_range = NA)
ftir |
A data.frame of FTIR spectral data including spectra to be baseline adjusted. Un data.frame de données spectrales IRTF comprenant les spectres à ajuster à la ligne de base. |
sample_ids |
A vector of sample IDs to be adjusted. All sample IDs must
be present in the Un vecteur d'ID d'échantillons à ajuster Tous les ID d'échantillons doivent
être présents dans la base de données |
wavenumber_range |
If specifying a single point wavenumber; a single numeric value. If specifying a wavenumber range, then a vector of two numeric values. Si l'on spécifie un nombre d'ondes ponctuel, une seule valeur numérique. Si l'on spécifie un nombre d'ondes, alors un vecteur de deux valeurs numériques. |
A data.frame containing the adjusted FTIR spectra.
Un data.frame contenant les spectres IRTF ajustee.
# Normalize all samples in `biodiesel` normalize_spectra(biodiesel) # Normalize just `paper` and `isopropanol` spectra from 4000 to 3100 cm^-1^ normalize_spectra(sample_spectra, sample_ids = c("paper", "isopropanol"), wavenumber_range = c(4000, 3100))
# Normalize all samples in `biodiesel` normalize_spectra(biodiesel) # Normalize just `paper` and `isopropanol` spectra from 4000 to 3100 cm^-1^ normalize_spectra(sample_spectra, sample_ids = c("paper", "isopropanol"), wavenumber_range = c(4000, 3100))
Produce a basic spectra overlay plot for all samples found in the FTIR dataset provided.
Produisez un tracé de base de superposition de spectres pour tous les échantillons trouvés dans l'ensemble de données IRTF fourni.
plot_ftir( ftir, plot_title = "FTIR Spectra", legend_title = "Sample ID", lang = NA )
plot_ftir( ftir, plot_title = "FTIR Spectra", legend_title = "Sample ID", lang = NA )
ftir |
A data.frame in long format with columns 'sample_id', 'wavenumber', and 'absorbance'. The 'absorbance' column may be replaced by a 'transmittance' column for transmittance plots. The code determines the correct y axis units and labels the plot/adjusts the margins appropriately. Un data.frame au format long avec les colonnes 'sample_id', 'wavenumber', et 'absorbance'. La colonne 'absorbance' peut être remplacée par une colonne 'transmittance' pour les tracés de transmission. Le code détermine les unités correctes de l'axe y et étiquette le tracé/ajuste les marges de manière appropriée. |
plot_title |
A title for a plot. Defaults to "FTIR Spectra". If a vector length two, the second element will be used for a subtitle. Un titre pour une trace. La valeur par défaut est «FTIR Spectra». Si un vecteur mesure deux, le deuxième élément sera utilisé pour un sous-titre. |
legend_title |
A title for the legend. Defaults to "Sample ID". Un titre pour la légende. La valeur par défaut est «Sample ID». |
lang |
An optional argument for language. If set to one of 'fr', 'french', 'francais', or 'français' the axis and default plot and legend titles will change to french. If non-default legend or plot titles are provided they are used as-is. You can also provide 'en', 'english' or 'anglais', or (the default) 'NA' will use the default language from user options. To set a permanent default, set 'options("PlotFTIR.lang" = "en")' or 'options("PlotFTIR.lang" = "fr")' for English or French, respectively. Un argument optionnel pour la langue. S'il vaut 'Fr', 'French', 'Francais', ou ‘Français', l’axe et les titres par défaut de le tracé et du légende seront en français. Si des titres du légende ou de tracé autres que ceux par défaut sont fournis, ils seront utilisés tels quels. Vous pouvez aussi fournir 'en', 'english' ou 'anglais', ou (le défaut) 'NA' qui utilisera le langue par défaut des options de l'utilisateur. Pour définir une valeur par défaut permanente, mettez 'options("PlotFTIR.lang" = "en")' ou ‘options("PlotFTIR.lang" = "fr")' pour l’anglais ou le français, respectivement. |
a ggplot object containing a FTIR spectral plot. The plot and legend titles are as provided, with each sample provided a different default color. Because this is a ggplot object, any other ggplot modifiers, layers, or changes can be applied to the returned object. Further manipulations can be performed by this package. Peut également fournir 'en', 'english' ou 'anglais'.
un objet ggplot contenant un tracé spectral IRTF. Les titres de le tracé et de la légende sont tels que fournis, avec une couleur par défaut différente pour chaque échantillon. Puisqu'il s'agit d'un objet ggplot, tous les autres modificateurs, calques ou changements ggplot peuvent être appliqués à l'objet retourné. D'autres manipulations peuvent être effectuées par ce package.
if (requireNamespace("ggplot2", quietly = TRUE)) { # Plot a basic FTIR Spectra overlay from the `sample_spectra` data set with default titles plot_ftir(sample_spectra) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Plot a basic FTIR Spectra overlay from the `sample_spectra` data set with default titles plot_ftir(sample_spectra) }
Plot the FTIR spectra in a journal prepared format. It may be desirable to plot spectra 'stacked and offset' by a certain amount. In this case the y axis becomes non-labelled and each charts baseline (0 for absorbance or 100 for transmittance) is offset by a certain amount.
Tracez les spectres IRTF dans un format préparé par un journal. Il peut être souhaitable de tracer les spectres 'empilés et décalés' d'une certaine quantité. Dans ce cas l'axe y devient non étiqueté et chaque ligne de base du graphique (0 pour absorbance ou 100 pour la transmittance) est décalée d'une certaine quantité.
plot_ftir_stacked( ftir, plot_title = "FTIR Spectra", legend_title = "Sample ID", stack_offset = 10, lang = NA )
plot_ftir_stacked( ftir, plot_title = "FTIR Spectra", legend_title = "Sample ID", stack_offset = 10, lang = NA )
ftir |
A data.frame in long format with columns 'sample_id', 'wavenumber', and 'absorbance'. The 'absorbance' column may be replaced by a 'transmittance' column for transmittance plots. The code determines the correct y axis units and labels the plot/adjusts the margins appropriately. Un data.frame au format long avec les colonnes 'sample_id', 'wavenumber', et 'absorbance'. La colonne 'absorbance' peut être remplacée par une colonne 'transmittance' pour les tracés de transmission. Le code détermine les unités correctes de l'axe y et étiquette le tracé/ajuste les marges de manière appropriée. |
plot_title |
A title for a plot. Defaults to "FTIR Spectra". If a vector length two, the second element will be used for a subtitle. Un titre pour une trace. La valeur par défaut est «FTIR Spectra». Si un vecteur mesure deux, le deuxième élément sera utilisé pour un sous-titre. |
legend_title |
A title for the legend. Defaults to "Sample ID". Un titre pour la légende. La valeur par défaut est «Sample ID». |
stack_offset |
The amount in percentage of stacking offset to use. For transmittance this is directly linked to the units of Y axis, for absorbance this is about 0.2 absorbance units. Le montant en pourcentage de décalage d'empilement à utiliser. Pour transmittance, cette valeur est directement liée aux unités de l'axe y, pour l'absorbance cela représente environ 0,2 unités d'absorbance. |
lang |
An optional argument for language. If set to one of 'fr', 'french', 'francais', or 'français' the axis and default plot and legend titles will change to french. If non-default legend or plot titles are provided they are used as-is. You can also provide 'en', 'english' or 'anglais', or (the default) 'NA' will use the default language from user options. To set a permanent default, set 'options("PlotFTIR.lang" = "en")' or 'options("PlotFTIR.lang" = "fr")' for English or French, respectively. Un argument optionnel pour la langue. S'il vaut 'Fr', 'French', 'Francais', ou ‘Français', l’axe et les titres par défaut de le tracé et du légende seront en français. Si des titres du légende ou de tracé autres que ceux par défaut sont fournis, ils seront utilisés tels quels. Vous pouvez aussi fournir 'en', 'english' ou 'anglais', ou (le défaut) 'NA' qui utilisera le langue par défaut des options de l'utilisateur. Pour définir une valeur par défaut permanente, mettez 'options("PlotFTIR.lang" = "en")' ou ‘options("PlotFTIR.lang" = "fr")' pour l’anglais ou le français, respectivement. |
a ggplot object containing a FTIR spectral plot. The plot and legend titles are as provided, with each sample provided a different default color. Because this is a ggplot object, any other ggplot modifiers, layers, or changes can be applied to the returned object. Further manipulations can be performed by this package. Peut également fournir 'en', 'english' ou 'anglais'.
un objet ggplot contenant un tracé spectral IRTF. Les titres de le tracé et de la légende sont tels que fournis, avec une couleur par défaut différente pour chaque échantillon. Puisqu'il s'agit d'un objet ggplot, tous les autres modificateurs, calques ou changements ggplot peuvent être appliqués à l'objet retourné. D'autres manipulations peuvent être effectuées par ce package.
[zoom_in_on_range()] to 'zoom' into a specified range, [compress_low_energy()] to make the x axis non-linear (compressing lower energy regions), [add_wavenumber_marker()] to add markers to highlight important wavenumbers, and [move_plot_legend()] to modify the legend position.
[zoom_in_on_range()] pour 'zoomer' sur une gamme spécifiée, [compress_low_energy()] pour rendre l'axe x non linéaire (en compression les régions à basse énergie), [add_wavenumber_marker()] pour ajouter des marqueurs afin de mettre en évidence les nombres d'ondes importants, et [move_plot_legend()] pour modifier la position de la légende.
if (requireNamespace("ggplot2", quietly = TRUE)) { # Plot FTIR spectras stacked showing the differences in the `biodiesel` dataset plot_ftir_stacked(biodiesel) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Plot FTIR spectras stacked showing the differences in the `biodiesel` dataset plot_ftir_stacked(biodiesel) }
Converts 'PlotFTIR' data to that ready to use by the 'ChemoSpec' package.
Convertit les données 'PlotFTIR' en données prêtes à être utilisées par le paquet 'ChemoSpec'.
plotftir_to_chemospec( ftir, group_crit = NA, group_colours = "auto", description = "FTIR Study" )
plotftir_to_chemospec( ftir, group_crit = NA, group_colours = "auto", description = "FTIR Study" )
ftir |
A data.frame in long format with columns 'sample_id', 'wavenumber', and 'absorbance'. The 'absorbance' column may be replaced by a 'transmittance' column for transmittance plots. The code determines the correct y axis units and labels the plot/adjusts the margins appropriately. Un data.frame au format long avec les colonnes 'sample_id', 'wavenumber', et 'absorbance'. La colonne 'absorbance' peut être remplacée par une colonne 'transmittance' pour les tracés de transmission. Le code détermine les unités correctes de l'axe y et étiquette le tracé/ajuste les marges de manière appropriée. |
group_crit |
A vector of character strings. Corresponds to [ChemoSpec::files2SpectraObject()] 'gr.crit' parameter. Un vecteur de chaînes de caractères. Correspond au paramètre 'gr.crit' de [ChemoSpec::files2SpectraObject()]. |
group_colours |
Group colours. Corresponds to [ChemoSpec::files2SpectraObject()] 'gr.cols' parameter. Couleurs du groupe. Correspond au paramètre 'gr.cols' de [ChemoSpec::files2SpectraObject()]. |
description |
A description of the experiment. Corresponds to [ChemoSpec::files2SpectraObject()] 'descrip' parameter. Description de l'expérience. Correspond au paramètre 'descrip' de [ChemoSpec::files2SpectraObject()]. |
A 'ChemoSpec' data object
Un objet de données 'ChemoSpec'
[ChemoSpec::files2SpectraObject()] for import requirements, and [chemospec_to_plotftir()] for converting to 'PlotFTIR' format.
[ChemoSpec::files2SpectraObject()] pour les conditions d'importation, et [chemospec_to_plotftir()] pour la conversion au format 'PlotFTIR'.
if (requireNamespace("ChemoSpec", quietly = TRUE) && interactive()) { # convert biodiesel to a `chemospec` object plotftir_to_chemospec(biodiesel) }
if (requireNamespace("ChemoSpec", quietly = TRUE) && interactive()) { # convert biodiesel to a `chemospec` object plotftir_to_chemospec(biodiesel) }
Converts 'PlotFTIR' data to that ready to use by the 'ir' package.
Convertit les données 'PlotFTIR' en données prêtes à être utilisées par le paquet 'ir'.
plotftir_to_ir(ftir, metadata = NA)
plotftir_to_ir(ftir, metadata = NA)
ftir |
A data.frame in long format with columns 'sample_id', 'wavenumber', and 'absorbance'. The 'absorbance' column may be replaced by a 'transmittance' column for transmittance plots. The code determines the correct y axis units and labels the plot/adjusts the margins appropriately. Un data.frame au format long avec les colonnes 'sample_id', 'wavenumber', et 'absorbance'. La colonne 'absorbance' peut être remplacée par une colonne 'transmittance' pour les tracés de transmission. Le code détermine les unités correctes de l'axe y et étiquette le tracé/ajuste les marges de manière appropriée. |
metadata |
Additional data to pass to 'ir' to include as metadata. Should be structured as a data.frame. Données supplémentaires à transmettre à 'ir' pour les inclure dans les métadonnées. Doit être structuré comme un data.frame. |
an 'ir' classed data.frame structured for use in that package.
un data.frame de classe 'ir' structuré pour être utilisé dans ce paquet.
[ir::ir_new_ir()] for information on how ir takes in data.
if (requireNamespace("ir", quietly = TRUE)) { # convert biodiesel to a `ir` object plotftir_to_ir(biodiesel, metadata = data.frame("Biodiesel_Content" = c(0, 0.25, 0.5, 1, 2.5, 5, 7.5, 10, 0.5, 5, NA)) ) }
if (requireNamespace("ir", quietly = TRUE)) { # convert biodiesel to a `ir` object plotftir_to_ir(biodiesel, metadata = data.frame("Biodiesel_Content" = c(0, 0.25, 0.5, 1, 2.5, 5, 7.5, 10, 0.5, 5, NA)) ) }
Reads a provided file and returns a data.frame in the proper format for PlotFTIR functions.
Lit un fichier fourni et renvoie un data.frame dans le format approprié pour les fonctions PlotFTIR.
read_ftir(path = ".", file = NA, sample_name = NA, ...)
read_ftir(path = ".", file = NA, sample_name = NA, ...)
path |
Path to the file. Default is the current working directory, as Chemin d'accès au fichier. Par défaut, il s'agit du répertoire de travail actuel, sous la forme |
file |
File name, required. If the file and path are provided together as Nom du fichier, obligatoire. Si le fichier et le chemin sont fournis ensemble en tant que |
sample_name |
Name for sample_id column in the returned data.frame. If not provided, the file name is used without the extension. Nom de la colonne sample_id dans le data.frame renvoyé. S'il n'est pas fourni, le nom du fichier est utilisé sans l'extension. |
... |
Additional parameters to pass to the file reading function. For CSV files, see Paramètres supplémentaires à transmettre à la fonction de lecture de fichier. Pour les fichiers CSV, voir |
a data.frame containing the spectral data from the file.
un data.frame contenant les données spectrales du fichier.
# Writing a temporary file to read later tf <- tempfile(fileext = ".csv") write.csv(sample_spectra[sample_spectra$sample_id == "paper", c("wavenumber", "absorbance")], file = tf, row.names = FALSE ) # Read the .csv file and call the sample `sample1` read_ftir(tf, sample_name = "sample1")
# Writing a temporary file to read later tf <- tempfile(fileext = ".csv") write.csv(sample_spectra[sample_spectra$sample_id == "paper", c("wavenumber", "absorbance")], file = tf, row.names = FALSE ) # Read the .csv file and call the sample `sample1` read_ftir(tf, sample_name = "sample1")
Reads provided files and returns a data.frame in the proper format for PlotFTIR functions.
Lit les fichiers fournis et renvoie un data.frame au format approprié pour les fonctions PlotFTIR.
read_ftir_directory(path, files, sample_names = NA, ...)
read_ftir_directory(path, files, sample_names = NA, ...)
path |
Path to the file. Default is the current working directory, as Chemin d'accès au fichier. Par défaut, il s'agit du répertoire de travail actuel, sous la forme |
files |
File names, required. Noms de fichiers, obligatoires. |
sample_names |
Name for sample_id column in the returned data.frame. If not provided, the file names are used without the extension. Nom de la colonne sample_id dans le data.frame renvoyé. S'il n'est pas fourni, les noms de fichiers sont utilisés sans l'extension. |
... |
Additional parameters to pass to the file reading function. For CSV files, see Paramètres supplémentaires à transmettre à la fonction de lecture de fichier. Pour les fichiers CSV, voir |
a data.frame containing the spectral data from the files.
un data.frame contenant les données spectrales des fichiers.
# Putting some files in a temp dir to read back into PlotFTIR: td <- tempdir() write.csv(sample_spectra[sample_spectra$sample_id == "paper", c("wavenumber", "absorbance")], file = file.path(td, "ftir_sample_1.csv"), row.names = FALSE ) write.csv(sample_spectra[sample_spectra$sample_id == "toluene", c("wavenumber", "absorbance")], file = file.path(td, "ftir_sample_2.csv"), row.names = FALSE ) # Read .csv files from the temp directory and call them `sample-1` and `sample-2` read_ftir_directory(td, c("ftir_sample_1.csv", "ftir_sample_2.csv"), c("sample-1", "sample-2"))
# Putting some files in a temp dir to read back into PlotFTIR: td <- tempdir() write.csv(sample_spectra[sample_spectra$sample_id == "paper", c("wavenumber", "absorbance")], file = file.path(td, "ftir_sample_1.csv"), row.names = FALSE ) write.csv(sample_spectra[sample_spectra$sample_id == "toluene", c("wavenumber", "absorbance")], file = file.path(td, "ftir_sample_2.csv"), row.names = FALSE ) # Read .csv files from the temp directory and call them `sample-1` and `sample-2` read_ftir_directory(td, c("ftir_sample_1.csv", "ftir_sample_2.csv"), c("sample-1", "sample-2"))
It may be desired to shift the baseline signal (0 for absorbance or 100 for transmittance) to aid in plotting the spectra. This can be done for all samples or a subset, using the same shift for all adjusted samples or calculated individually.
Recalculate or shift to baseline/max transmittance can be done following one of a few methods:
To shift baseline based on the value at a given wavenumber:
recalculate_baseline(ftir, wavenumber_range = [numeric], method = 'point')
To shift baseline based on the average value across a provided wavenumber range:
recalculate_baseline(ftir, wavenumber_range = c([numeric], [numeric]), method = 'average')
To shift baseline based on the value at the single lowest point of absorbance
(or highest point of transmittance) across the whole spectra
recalculate_baseline(ftir, method = 'minimum')
To shift baseline based on the value at the single lowest point of absorbance
(or highest point of transmittance) in a given range
recalculate_baseline(ftir, wavenumber_range = c([numeric], [numeric]), method = 'minimum')
To perform the exact same baseline adjustment on all samples, specify
individually = FALSE
. To adjust with a unique determination for each
sample, specify individualy = TRUE
.
Il peut être souhaitable de décaler le signal de la ligne de base (0 pour l'absorbance ou 100 pour la transmittance) pour faciliter le tracé des spectres. Cela peut être fait pour tous les échantillons ou un sous-ensemble, en utilisant le même décalage pour tous les échantillons ajustés ou calculés individuellement.
Le recalcul ou le décalage de la ligne de base/transmittance maximale peut être effectué en suivant l'une des méthodes suivantes :
Pour décaler la ligne de base en fonction de la valeur à un nombre d'ondes donné :
recalculate_baseline(ftir, wavenumber_range = [numeric], method = 'point')
Pour décaler la ligne de base en fonction de la valeur moyenne sur un nombre
d'ondes donné : #' recalculate_baseline(ftir) = [numerique], method = 'point')
recalculate_baseline(ftir, wavenumber_range = c(numeric, numeric),
method = 'average')'
Pour décaler la ligne de base en fonction de la valeur du point d'absorbance
le plus bas (ou du point de transmittance le plus élevé) sur l'ensemble des spectres.
recalculate_baseline(ftir, method = 'minimum')
Décaler la ligne de base en fonction de la valeur du point d'absorbance le
plus bas (ou du point de transmittance le plus élevé) dans une gamme donnée.
recalculate_baseline(ftir, wavenumber_range = c([numeric], [numeric]), method = 'minimum')
Pour effectuer exactement le même ajustement de la ligne de base sur tous
les échantillons, spécifiez individually = FALSE
. Pour ajuster avec une
détermination unique pour chaque échantillon, spécifiez individualy = TRUE
.
recalculate_baseline( ftir, sample_ids = NA, wavenumber_range = NA, method = "average", individually = TRUE )
recalculate_baseline( ftir, sample_ids = NA, wavenumber_range = NA, method = "average", individually = TRUE )
ftir |
A data.frame of FTIR spectral data including spectra to be baseline adjusted. Un data.frame de données spectrales IRTF comprenant les spectres à ajuster à la ligne de base. |
sample_ids |
A vector of sample IDs to be adjusted. All sample IDs must
be present in the Un vecteur d'ID d'échantillons à ajuster Tous les ID d'échantillons doivent
être présents dans la base de données |
wavenumber_range |
If specifying a single point wavenumber; a single numeric value. If specifying a wavenumber range, then a vector of two numeric values. Si l'on spécifie un nombre d'ondes ponctuel, une seule valeur numérique. Si l'on spécifie un nombre d'ondes, alors un vecteur de deux valeurs numériques. |
method |
One of three values:
|
individually |
If adjusting all samples by the same amount, specify
Si vous ajustez tous les échantillons de la même manière, spécifiez |
A data.frame containing the adjusted FTIR spectra.
Un data.frame contenant les spectres IRTF ajustee.
# Adjust the biodiesel spectra to minimum for each sample recalculate_baseline(biodiesel, method = "minimum", individually = TRUE)
# Adjust the biodiesel spectra to minimum for each sample recalculate_baseline(biodiesel, method = "minimum", individually = TRUE)
This function permits renaming Sample IDs as shown in the legend of a plot. While typically having proper names assigned in the data is preferred, this function allows for names to be modified after plot creation.
Cette fonction permet de renommer les identifiants des échantillons dans la légende d'un tracé. Bien qu'il soit préférable d'attribuer les noms appropriés dans les données, cette fonction permet de modifier les noms après la création du tracé.
rename_plot_sample_ids(ftir_spectra_plot, sample_ids)
rename_plot_sample_ids(ftir_spectra_plot, sample_ids)
ftir_spectra_plot |
A plot generated by Un tracé généré par |
sample_ids |
A named vector of format Un vecteur nommé du format |
the FTIR plot as a ggplot2 object, with samples renamed in the legend.
le tracé IRTF en tant qu'objet ggplot2, avec les échantillons renommés dans la légende.
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot p <- plot_ftir(sample_spectra) # Rename Samples in Legend: new_ids <- c( "Toluene" = "toluene", "C7 Alkanes" = "heptanes", "IPA" = "isopropanol", "White Paper" = "paper", "PS Film" = "polystyrene" ) rename_plot_sample_ids(p, new_ids) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot p <- plot_ftir(sample_spectra) # Rename Samples in Legend: new_ids <- c( "Toluene" = "toluene", "C7 Alkanes" = "heptanes", "IPA" = "isopropanol", "White Paper" = "paper", "PS Film" = "polystyrene" ) rename_plot_sample_ids(p, new_ids) }
This dataset holds example data from Attenuated Total Reflectance (ATR) type FTIR instruments. Solvents were collected on 5-Bounce ZnSe ATR-FTIR and solids were collected on a 1-Bounce Diamond ATR-FTIR.
The samples included in this data set are: * 'toluene' a FTIR spectra of toluene. * 'isopropanol' a FTIR spectra of isopropanol. * 'heptanes' a FTIR spectra of heptanes. * 'paper' a FTIR spectra of a commercially available white paper. * 'polystyrene' a FTIR spectra of polystyrene film.
Ce donnée contient des exemples de données provenant d'instruments IRTF de type réflectance totale atténuée (RTA). Les solvants ont été collectés sur un RTA-IRTF ZnSe à 5 rebonds et les solides ont été collectés sur un RTA-IRTF diamant à 1 rebond.
Les échantillons inclus dans cet ensemble de données sont : * 'toluene' un spectre IRTF du toluène. * ‘isopropanol' un spectre IRTF de l’isopropanol. * ‘heptanes' un spectre IRTF d’heptanes. * ‘paper' un spectre IRTF d’un livre blanc disponible dans le commerce. * ‘polystyrene' un spectre IRTF d’un film de polystyrène
sample_spectra
sample_spectra
The data is in a long format data.frame, ready for use, and with the following variables:
* 'wavenumber' wavenumber (x axis) value for each point. In units of wavenumbers (cm^-1). * 'absorbance' the absorbance of the sample at each specified wavenumber. * 'sample_id' the sample identity of the various included spectra.
Les données sont dans un format long data.frame, prêt à l'emploi, et avec les variables suivantes:
* ‘wavenmber' valeur du nombre d’onde (axe x) pour chaque point. En unités de nombres d'ondes (cm^-1). * ‘absorbance' l’absorbance de l'échantillon à chaque nombre d'onde spécifié. * ‘sample_id' identité d’échantillon des différents spectres inclus.
Save FTIR plot object to file. Uses [ggplot2::ggsave()] to save to disk. Specify a filename ending with '.svg' for vector graphics, if requeste by a journal.
Enregistrer l'objet de tracé IRTF dans un fichier. Utilise [ggplot2::ggsave()] pour enregistrer sur le disque. Spécifier un nom de fichier se terminant par '.svg' pour les graphiques vectoriels, si un journal le demande.
save_plot(ftir_spectra_plot, filename, ...)
save_plot(ftir_spectra_plot, filename, ...)
ftir_spectra_plot |
A plot generated by [plot_ftir()] or [plot_ftir_stacked()]. Un tracé généré par [plot_ftir()] ou [plot_ftir_stacked()]. |
filename |
Name and directory of the file you wish to create. If it includes a extension the function will produce a file of that type. Options for filetypes include "eps", "ps", "tex" (pictex), "pdf", "jpeg", "tiff", "png", "bmp", "svg" or "wmf" (on windows only). Nom et répertoire du fichier que vous souhaitez créer. S'il contient une extension, la fonction produira un fichier de ce type. Les options pour les types de fichiers incluent "eps", "ps", "tex" (pictex), "pdf", "jpeg", "tiff", "png", "bmp", "svg" ou "wmf" (sur Windows uniquement). |
... |
Additional arguements to pass to [ggplot2::ggsave()]. Arguments supplémentaires à passer à [ggplot2::ggsave()]. |
invisible 'TRUE'
if (requireNamespace("ggplot2", quietly = TRUE)) { td <- tempdir() save_plot(plot_ftir(biodiesel), filename = file.path(td, "biodiesel_plot.png")) }
if (requireNamespace("ggplot2", quietly = TRUE)) { td <- tempdir() save_plot(plot_ftir(biodiesel), filename = file.path(td, "biodiesel_plot.png")) }
It's common to be interested in only a small portion of the FTIR range. In these cases, this function will zoom the spectral plot to the range provided.
Il est courant de s'intéresser uniquement à une petite partie de la gamme IRTF. Dans ces cas, cette fonction permet de zoomer sur le tracé spectral sur la gamme fournie.
zoom_in_on_range(ftir_spectra_plot, zoom_range = c(1000, 1900))
zoom_in_on_range(ftir_spectra_plot, zoom_range = c(1000, 1900))
ftir_spectra_plot |
A plot generated by Un tracé généré par |
zoom_range |
A vector of length two, with the wavenumber range of interest. Order of provided limits is not important. Un vecteur de longueur deux, avec la gamme de nombres d'ondes de d'intérêt. L'ordre des limites fournies n'est pas important. |
the FTIR plot as a ggplot2 object, with x axis limits as those supplied by
zoom_range
.
le tracé IRTF en tant qu'objet ggplot2, avec des limites d'axe x comme
celles fournies par zoom_range
.
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot biodiesel_plot <- plot_ftir(biodiesel) # Zoom to a specified range of 1850 to 1650 cm^-1 zoom_in_on_range(biodiesel_plot, c(1650, 1850)) }
if (requireNamespace("ggplot2", quietly = TRUE)) { # Generate a plot biodiesel_plot <- plot_ftir(biodiesel) # Zoom to a specified range of 1850 to 1650 cm^-1 zoom_in_on_range(biodiesel_plot, c(1650, 1850)) }