2.5 Visualisation of DE distributions

The Luminescence package includes several functions to visualise equivalent dose distributions. These functions include:

  • plot_AbanicoPlot()
  • plot_GrowthCurve()
  • plot_Histogram()
  • plot_KDE()
  • plot_RadialPlot()
  • plot_ViolinPlot()

As for the functions to calculate a mean dose the plotting functions also follow a common pattern. The first argument is always named data and accepts either an RLum.Results object, or a data.frame with two columns for the equivalent doses and their corresponding standard errors. While providing an RLum.Results object is certainly the more comfortable approach, it is highly suggested to always use the more simple data.frame as input data.4

2.5.1 Abanico Plot

Along with the Radial Plot the Abanico Plot is arguably the most complicated and also the most customisable plot in the Luminescence package. With over 30 arguments to customise the plot to one’s desire, creating an Abanico Plot may appear too complicated. Luckily enough, all of those arguments already come with reasonable default values. It is only the data that we need to provide in order to obtain a plot.

plot_AbanicoPlot(de_df)

For standard analyses the plot will probably suffice, but if we want to create a graph for a publication there are certainly some details we may want to tweak. Instead of providing a detailed explanation of what each argument does or why these specific values were chosen we only refer to the documentation of the Abanico Plot (?plot_AbanicoPlot).

plot_AbanicoPlot(de_df, 
                 z.0 = "median", 
                 zlim = c(200, 1000),
                 ylim = c(-100, 100),
                 dispersion = "qr", 
                 zlab = c("Equivalent dose (s)"),
                 main = "Sample CA-2 (Qz 100-150 mm)",
                 summary = c("n", "mean", "se.abs", "kurtosis", "skewness"),
                 summary.pos = "topleft",
                 rotate = FALSE, 
                 rug = TRUE,
                 grid.col = FALSE,
                 y.axis = FALSE,
                 line = cam,
                 line.col = "red",
                 line.label = "CAM")

2.5.2 Further plots

In this subsection we want to give you an impression of all the plots available in the Luminescence package. In general, if you understood how to use and customise the plot_AbanicoPlot() function, using all the other plotting functions will be straightforward. Of course, the number of arguments differs from plot to plot, so it is always advisable to have a look at their corresponding documentation.

In the following, we plot the same dose distribution with some of the other plotting functions.

Kernel Density Estimate Plot

plot_KDE(de_df, 
         main = "Sample CA-2 (Qz 100-150 mm)",
         xlab = c("Equivalent dose (s)"),
         summary = c("n", "mean", "se.abs", "kurtosis", "skewness"),
         summary.pos = "topleft",
         bw = 25,
         cex = 0.9)

Histogram

# use custom breaks
breaks <- hist(de_df$De, breaks = 5, plot = FALSE)$breaks

plot_Histogram(de_df, 
               main = "Sample CA-2 (Qz 100-150 mm)",
               xlab = c("Equivalent dose (s)"),
               rug = TRUE, 
               normal_curve = TRUE,
               breaks = breaks)

Radial Plot

plot_RadialPlot(de_df, 
                main = "Sample CA-2 (Qz 100-150 mm)",
                zlab = c("Equivalent dose (s)"),
                summary = c("n", "mean", "se.abs", "kurtosis", "skewness"),
                summary.pos = "topleft",
                bw = 25,
                cex = 0.9)

Violin Plot

plot_ViolinPlot(de_df, 
                main = "Sample CA-2 (Qz 100-150 mm)", 
                summary = c("n", "mean", "se.abs", "kurtosis", "skewness"),
                summary.pos = "topleft",
                cex = 0.8)


  1. If you wondered why we recommend using a data.frame as input data instead of the RLum.Resultsobject: as of version 0.8.0 of the Luminescence package, the internal structure of the RLum.Analysis objects returned by the various functions is not yet fully homogenised. This may cause the plotting functions to fail to obtain the original data, which is why providing the proper data via a data.frame is always the safer bet.