View source: R/aggregateColor.R
aggregateColor | R Documentation |
Summarize soil color data, weighted by occurrence and horizon thickness.
aggregateColor( x, groups = "genhz", col = "soil_color", colorSpace = "CIE2000", k = NULL, profile_wt = NULL, mixingMethod = c("estimate", "exact") )
x |
a |
groups |
the name of a horizon or site attribute used to group horizons, see examples |
col |
the name of a horizon-level attribute with soil color specified in hexadecimal (i.e. "#rrggbb") |
colorSpace |
the name of color space or color distance metric to use for conversion of aggregate colors to Munsell; either CIE2000 (color distance metric), LAB, or sRGB. Default = 'CIE2000' |
k |
single integer specifying the number of colors discretized via PAM (cluster package), see details |
profile_wt |
the name of a site-level attribute used to modify weighting, e.g. area |
mixingMethod |
method used to estimate "aggregate" soil colors, see |
Weights are computed by:
w_i = sqrt(sum(thickness_i)) * n_i
where w_i
is the weight associated with color i
, thickness_i
is the total thickness of all horizons associated with the color i
, and n_i
is the number of horizons associated with color i
. Weights are computed within groups specified by groups
.
A list with the following components:
scaled.data |
a |
aggregate.data |
a |
D.E. Beaudette
generalize.hz
# load some example data data(sp1, package='aqp') # upgrade to SoilProfileCollection and convert Munsell colors sp1$soil_color <- with(sp1, munsell2rgb(hue, value, chroma)) depths(sp1) <- id ~ top + bottom site(sp1) <- ~ group # generalize horizon names n <- c('O', 'A', 'B', 'C') p <- c('O', 'A', 'B', 'C') sp1$genhz <- generalize.hz(sp1$name, n, p) # aggregate colors over horizon-level attribute: 'genhz' a <- aggregateColor(sp1, groups = 'genhz', col = 'soil_color') # aggregate colors over site-level attribute: 'group' a <- aggregateColor(sp1, groups = 'group', col = 'soil_color') # aggregate colors over site-level attribute: 'group' # discretize colors to 4 per group a <- aggregateColor(sp1, groups = 'group', col = 'soil_color', k = 4) # aggregate colors over depth-slices s <- slice(sp1, c(5, 10, 15, 25, 50, 100, 150) ~ soil_color) s$slice <- paste0(s$top, ' cm') s$slice <- factor(s$slice, levels=guessGenHzLevels(s, 'slice')$levels) a <- aggregateColor(s, groups = 'slice', col = 'soil_color') ## Not run: # optionally plot with helper function if(require(sharpshootR)) aggregateColorPlot(a) ## End(Not run) # a more interesting example ## Not run: data(loafercreek, package = 'soilDB') # generalize horizon names using REGEX rules n <- c('Oi', 'A', 'BA','Bt1','Bt2','Bt3','Cr','R') p <- c('O', '^A$|Ad|Ap|AB','BA$|Bw', 'Bt1$|^B$','^Bt$|^Bt2$','^Bt3|^Bt4|CBt$|BCt$|2Bt|2CB$|^C$','Cr','R') loafercreek$genhz <- generalize.hz(loafercreek$hzname, n, p) # remove non-matching generalized horizon names loafercreek$genhz[loafercreek$genhz == 'not-used'] <- NA loafercreek$genhz <- factor(loafercreek$genhz) a <- aggregateColor(loafercreek, 'genhz') # plot results with helper function par(mar=c(1,4,4,1)) aggregateColorPlot(a, print.n.hz = TRUE) # inspect aggregate data a$aggregate.data ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.