Diagramas de Piper

Para el desarollo de este trabajó se empleó el código de http://srmulcahy.github.io/2012/12/04/ternary-plots-r.html https://github.com/markolipka/ggplot_Piper y funciona en el paquete smwrGraphs.

Con el fin de la consecusión del código se emplearon las siguientes librerías. Estas se obtienen a partir de los desarrollos mencionados y también se ajuntan en los archivos del trabajo.

source("ggplot_Piper.R")
library("hydrogeo")
## Warning: package 'hydrogeo' was built under R version 4.3.3
library("tidyverse")
## Warning: package 'forcats' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

Limpieza de datos

Para limpiar y tratar los datos se emplea Excel por cómodida, debido a que se trata de un archivo pequeño. No obstante, si la cantidad de datos fuese mucho más extensa, lo ideal sería emplear este u otros programas. El archivo con el cuál se realizó esto se encuentra también adjunto.

Conversiones

Los datos químicos se encuentran en \(\frac{mg}{L}\) y debido a que se trata con iones se debe conseguir el equivalente molecular. Para ello se emplea la siguiente formula:

\[mEq= \frac{Valencia}{PesoMolar} \times mg \]

(Wikipedia: Equivalent (chemistry))

Datos

Se cargan los datos anteriormente trados, ya listos en su correspondiente \(mEq\).

milliequivalents = read_csv("datos.csv")
## Rows: 38 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (1): IDs
## dbl (8): Ca, Mg, Na, K, Cl, SO4, CO3, HCO3
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
percents <- toPercent(milliequivalents)

data <- as.data.frame(percents)

head(data)
##          Ca        Mg       Na          K        Cl       SO4 CO3       HCO3
## 1 27.626459  8.171206 28.40467 35.7976654 38.362069  0.000000   0 61.6379310
## 2  3.187250 17.906404 77.15757  1.7487768 89.888119  9.739532   0  0.3723493
## 3  3.428524 19.011762 75.65720  1.9025110 91.086487  8.559384   0  0.3541287
## 4 40.416626 11.690840 47.01645  0.8760829 18.389199 14.581006   0 67.0297952
## 5 51.776771 15.895540 31.08753  1.2401622  9.405256 14.925185   0 75.6695587
## 6 48.061699 18.738268 32.66955  0.5304823 14.361079 14.093117   0 71.5458047
##          IDs
## 1 WEC-452-40
## 2 WEC-452-37
## 3 WEC-452-39
## 4  WEC-452-1
## 5  WEC-452-2
## 6  WEC-452-3

Normalización

Se normalizan al 100% los datos de los diferentes compuestos o elementos.

cation.sums <- apply(data[, c("Ca", "Mg", "Na", "K")], 1, FUN = sum)
anion.sums  <- apply(data[, c("Cl", "SO4", "CO3", "HCO3")], 1, FUN = sum)

Transformation

Se realiza una transformación algebráica para generar el diagrama de Piper.

piper_data <- transform_piper_data(Ca   = data$Ca,
                                   Mg   = data$Mg,
                                   Cl   = data$Cl,
                                   SO4  = data$SO4,
                                   name = data$IDs)



piper_data
##     observation          x           y
## 1    WEC-452-40  68.287938   7.0765097
## 2    WEC-452-37  87.859548  15.5074831
## 3    WEC-452-39  87.065595  16.4647563
## 4     WEC-452-1  53.737954  10.1246182
## 5     WEC-452-2  40.275459  13.7660147
## 6     WEC-452-3  42.569167  16.2279024
## 7     WEC-452-4  82.555661   8.4715867
## 8     WEC-452-5  86.305501   7.9271025
## 9     WEC-452-6  96.069632   2.0576214
## 10    WEC-452-7  49.673692  30.1123088
## 11    WEC-452-9  50.079047  22.8750719
## 12   WEC-452-10  47.197230  17.5046992
## 13   WEC-452-11  41.680278  15.0806446
## 14   WEC-452-15  22.237847  14.8919582
## 15   WEC-452-17  47.710718  11.6944898
## 16   WEC-452-18  44.349438  13.8055249
## 17   WEC-452-20  61.399852  13.9509793
## 18   WEC-452-22  67.833070  14.2578867
## 19   WEC-452-23  76.182944  12.8415453
## 20   WEC-452-24  93.964148   4.1048605
## 21   WEC-452-25  67.904008  10.2789233
## 22   WEC-452-29  34.817382  12.2828035
## 23   WEC-452-30  68.031953  10.9542616
## 24   WEC-452-31  55.983361  14.6111669
## 25   WEC-452-36  41.163924  24.4697894
## 26   WEC-452-38  40.755341  13.9566211
## 27   WEC-452-16  43.016143  19.3808243
## 28    WEC-452-8  33.853492  20.3069807
## 29   WEC-452-12  49.219591  15.0863855
## 30   WEC-452-13  46.283598  16.2232170
## 31   WEC-452-14   9.105729   3.1059297
## 32   WEC-452-19  14.831472   8.1033618
## 33   WEC-452-26  15.424021  14.1000015
## 34   WEC-452-27  11.067622   7.1976844
## 35   WEC-452-28  94.855897   4.0160725
## 36   WEC-452-33  22.556777  20.4337158
## 37   WEC-452-34  14.869142   7.5164868
## 38   WEC-452-35  17.926209  15.6899074
## 39   WEC-452-40 158.362069   0.0000000
## 40   WEC-452-37 214.757885   8.4347265
## 41   WEC-452-39 215.366179   7.4126832
## 42    WEC-452-1 145.679702  12.6275883
## 43    WEC-452-2 136.867849  12.9256584
## 44    WEC-452-3 141.407637  12.2050619
## 45    WEC-452-4 167.009628   5.8785271
## 46    WEC-452-5 186.398633  26.9157299
## 47    WEC-452-6 140.025344   1.0974192
## 48    WEC-452-7 153.170655   9.9164434
## 49    WEC-452-9 142.075499  17.9744421
## 50   WEC-452-10 173.938148  18.9988034
## 51   WEC-452-11 153.919105  10.5022881
## 52   WEC-452-15 130.279270   5.3022245
## 53   WEC-452-17 147.932712  12.2234149
## 54   WEC-452-18 137.754903  14.0839329
## 55   WEC-452-20 162.207336  29.8205133
## 56   WEC-452-22 145.992920   9.7424543
## 57   WEC-452-23 144.693653  11.3515154
## 58   WEC-452-24 169.808069  18.0946644
## 59   WEC-452-25 155.212377   0.5164511
## 60   WEC-452-29 144.165591   8.7832657
## 61   WEC-452-30 148.911693  15.8986867
## 62   WEC-452-31 143.437500  10.6381437
## 63   WEC-452-36 149.656608  27.2515580
## 64   WEC-452-38 139.496455  23.7721378
## 65   WEC-452-16 147.530948  26.3025221
## 66    WEC-452-8 146.030769  34.8543766
## 67   WEC-452-12 157.198497  27.9259575
## 68   WEC-452-13 157.733781  25.6746767
## 69   WEC-452-14 130.896432   3.0450489
## 70   WEC-452-19 142.082425  12.8351583
## 71   WEC-452-26 137.358614  18.4020758
## 72   WEC-452-27 131.381831   5.1847254
## 73   WEC-452-28 181.322613   5.6671683
## 74   WEC-452-33 139.023622  17.4024296
## 75   WEC-452-34 140.064824   9.9038411
## 76   WEC-452-35 136.577980  12.4314201
## 77   WEC-452-40 111.282202  81.5451547
## 78   WEC-452-37 149.266998 121.8688718
## 79   WEC-452-39 148.602792 123.0508752
## 80    WEC-452-1 100.431369  91.0004154
## 81    WEC-452-2  88.329065  96.9977436
## 82    WEC-452-3  90.827114  99.8135625
## 83    WEC-452-4 124.034096  80.3147257
## 84    WEC-452-5 141.833582 104.1050715
## 85    WEC-452-6 117.770303  39.6444856
## 86    WEC-452-7  95.592160 109.6458508
## 87    WEC-452-9  94.662590 100.0964445
## 88   WEC-452-10 110.998998 128.0131881
## 89   WEC-452-11  96.478041 109.9936577
## 90   WEC-452-15  73.490255 103.6642050
## 91   WEC-452-17  97.974402  98.7542056
## 92   WEC-452-18  91.132540  94.8366639
## 93   WEC-452-20 116.384710 109.1880516
## 94   WEC-452-22 105.609509  79.6889453
## 95   WEC-452-23 110.008166  71.4288598
## 96   WEC-452-24 135.924596  76.7828735
## 97   WEC-452-25 108.740024  81.0093543
## 98   WEC-452-29  88.481262 105.2318640
## 99   WEC-452-30 109.899148  83.4707553
## 100  WEC-452-31  98.563523  88.3625635
## 101  WEC-452-36  96.213289 119.8185921
## 102  WEC-452-38  92.959379 104.3771468
## 103  WEC-452-16  97.271657 113.3546300
## 104   WEC-452-8  94.141580 124.7295661
## 105  WEC-452-12 106.915490 115.0191439
## 106  WEC-452-13 104.737077 117.4681487
## 107  WEC-452-14  69.983506 108.5498916
## 108  WEC-452-19  79.822894 120.6724028
## 109  WEC-452-26  77.633213 121.8500541
## 110  WEC-452-27  70.643638 110.3869195
## 111  WEC-452-28 138.565883  79.7243905
## 112  WEC-452-33  79.915147 119.7818542
## 113  WEC-452-34  78.156149 117.1333805
## 114  WEC-452-35  76.311455 116.8166577

Diagrama de Piper

Finalmente, a partir de los datos anteriormente tratados y correctamente transformados se genera el diagrama de Piper con la función de ggplot_piper().

ggplot_piper() + geom_point(aes(x,y), data=piper_data)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.