Instalación de paquetes

if(!require(pacman))
  install.packages("pacman") # para que no se esté instalando todo el tiempo
## Loading required package: pacman
library("pacman")

p_load("vroom",
       "dplyr",
       "ggplot2",
       "tidyr")

Base de datos

Curvas_amplif <- read.csv("https://raw.githubusercontent.com/ManuelLaraMVZ/Metabolomica_2026_1/refs/heads/main/Amplificaci%C3%B3n-RT-qPCR-20261_G1.csv")

head(Curvas_amplif)
##   Cycle         A1         A2         A3         A4        A5           A6
## 1     1 -9.4820849 -4.6293737 -11.777275 -26.285354 -5.853723 -10.59438327
## 2     2 -8.2355249  1.4191769  -8.049590  -9.478556  5.367281  -0.92868366
## 3     3 -1.6772250  2.0911121  -1.785421  -5.302475  3.967811  -0.06897497
## 4     4  0.3185735  5.6280553   7.224736   1.146931  8.550542   2.61675858
## 5     5  2.2108334  0.8847123   2.828714  -3.090434  5.377117   1.82031017
## 6     6 -6.6374424 -3.1625487   1.561358  -6.039556  5.910620   0.97070016

Modificar nombres columnas

Curvas_amplif2 <- Curvas_amplif %>%  
  mutate(Ciclo = Cycle,
         Equipo_1 = A1,
         Equipo_2 = A2,
         Equipo_3 = A3,
         Equipo_4 = A4,
         Equipo_5 = A5,
         Equipo_6 = A6) %>% 
  select(-Cycle:-A6) 

Curvas_amplif2
##    Ciclo   Equipo_1    Equipo_2    Equipo_3     Equipo_4    Equipo_5
## 1      1 -9.4820849  -4.6293737 -11.7772746 -26.28535430  -5.8537227
## 2      2 -8.2355249   1.4191769  -8.0495902  -9.47855619   5.3672807
## 3      3 -1.6772250   2.0911121  -1.7854214  -5.30247480   3.9678107
## 4      4  0.3185735   5.6280553   7.2247356   1.14693074   8.5505417
## 5      5  2.2108334   0.8847123   2.8287136  -3.09043383   5.3771166
## 6      6 -6.6374424  -3.1625487   1.5613583  -6.03955623   5.9106199
## 7      7 -5.9423238  -0.7823888  -0.6270633  -1.03545902   0.8710510
## 8      8  1.9437281   3.6886636   0.2085411   0.62877114   1.3907730
## 9      9 -3.6448056  -1.1077201  -0.8618762  -2.95044851  -3.9775633
## 10    10 -0.9504983  -1.3818447   0.1964022  -3.44174230  -1.3140243
## 11    11 -1.0704692  -4.6268267  -6.0786860  -2.39480464  -1.9381592
## 12    12 -4.0826359   3.0639808  -5.1912493  -0.20388814  -5.3215744
## 13    13 -5.6351169  -2.5734721   4.3455890   1.38266219  -1.4750337
## 14    14 -0.1675053   8.6797492   9.0193333   4.20391947   3.7766950
## 15    15 -0.8401372   8.8392659  13.9957484   0.11106172   0.8799676
## 16    16  3.1419238  20.6178322  35.9797793   5.06223421  18.4882776
## 17    17  0.4453537  32.9489408  61.4085921   4.38789850  23.2535596
## 18    18 -0.6993381  58.6831283  90.5880275   0.09858559  45.7956588
## 19    19 -2.2119365  88.4611803 121.4411764   0.44823393  74.1387863
## 20    20 -1.0441537 119.0936698 148.4208196   7.17445771 106.9902667
## 21    21  0.3081392 144.9460662 170.4055821   1.60909720 135.6707376
## 22    22  2.3711248 163.0303977 189.9850745   2.42055684 157.9320331
## 23    23  0.1614810 175.6811662 207.8820747  -0.90989223 176.3156408
## 24    24  4.0503749 187.6572857 224.5392444  -1.36143150 191.2729995
## 25    25  4.7454935 199.6070647 238.3876641   2.53758775 204.6136745
## 26    26  7.8592963 210.2382783 250.9962958   2.03434321 214.2038484
## 27    27  3.1660928 217.1758991 261.4314367   2.14839117 221.5902889
## 28    28  5.9511283 219.3416774 268.5150038   9.08338713 225.8042541
## 29    29 11.8121388 222.4495320 273.7231170   0.40437049 229.7684731
## 30    30  4.6344001 225.7678660 278.7910732   0.88596480 232.4662385
## 31    31  4.4139032 231.9343416 285.4757579   1.49950508 236.0449098
## 32    32  3.2250317 235.3664922 290.2673024   0.06203012 235.8376688
## 33    33  3.6178860 241.6114577 292.5044770   0.67544777 236.1829262
## 34    34  3.3097533 243.5933785 294.1721172   2.70844373 234.4904944
## 35    35  5.8278075 247.0345531 295.3230749  -1.68708488 234.4634902
## 36    36  7.3028951 245.9013570 300.0756779   4.19819676 233.2749875
## 37    37  7.0780503 246.2882630 301.3884990   3.89055419 230.0798167
## 38    38  5.8847496 245.5842740 303.9718747  -1.67370839 223.9226030
## 39    39  3.9422104 246.9222362 304.0008804  -2.30902163 217.9624546
## 40    40  2.7576477 247.4540958 306.2909797   3.78478794 212.1123489
## 41    41  2.2611064 246.0142452 305.7459886   2.93997279 207.8086043
## 42    42  0.5248584 242.8084487 304.6009401   1.98881813 201.0294299
## 43    43 -1.7462855 239.9006451 303.1095185   0.49853976 196.6118218
## 44    44 -5.0249532 238.1537776 301.0707298  -4.79012379 189.1227225
## 45    45 -5.8501414 237.3050045 299.3908700  -3.70282106 184.6878919
## 46    46 -5.3429828 236.9909627 298.1232248  -3.03757552 180.1167596
## 47    47 -4.9894767 235.0602373 299.1819097   0.11330159 177.2809241
## 48    48 -6.4760990 232.7485888 297.1124623  -4.54477637 170.9702207
## 49    49 -5.6407421 230.4978762 296.1425288  -5.15423716 164.5240412
## 50    50 -5.4014170 230.5301180 294.9141860  -0.61060970 160.4963362
## 51    51 -4.5050870 230.5624039 296.8226743   1.35751066 159.3647416
##        Equipo_6
## 1  -10.59438327
## 2   -0.92868366
## 3   -0.06897497
## 4    2.61675858
## 5    1.82031017
## 6    0.97070016
## 7   -1.82505540
## 8    3.64788428
## 9    0.45872975
## 10   2.31742306
## 11  -0.05761754
## 12   4.77083813
## 13  11.66457238
## 14  33.08126763
## 15  62.16627552
## 16  97.78390779
## 17 142.07676560
## 18 181.69907760
## 19 217.53589160
## 20 246.54191470
## 21 270.56598580
## 22 289.70480430
## 23 308.17328780
## 24 322.42669100
## 25 335.58013790
## 26 346.68773130
## 27 356.60789240
## 28 363.15883790
## 29 366.81331340
## 30 371.41880790
## 31 379.16585080
## 32 383.85857760
## 33 386.92169450
## 34 385.30511300
## 35 387.40891850
## 36 387.44410710
## 37 388.88151640
## 38 388.52667290
## 39 389.86346930
## 40 390.65261170
## 41 388.66381580
## 42 384.97947780
## 43 384.08587520
## 44 384.04249680
## 45 384.94550350
## 46 385.15613220
## 47 383.51805410
## 48 381.60343510
## 49 379.32131760
## 50 379.15061290
## 51 379.74683600

Reordenamiento de datos: 1. Seleccionar datos a reordenar (variables dependientes) 2. Agrupar variables por nombre 3. Agrupar variables por ciclo

# Para poner en una columna el nombre de dónde viene la muestra en la otra su fluorescencia correspondiente:
Curvas_amplif3 <- Curvas_amplif2 %>% 
  pivot_longer(cols = -Ciclo,             # para manejo de muchos datos (seleccionar todas menos la de ciclo)
               names_to = "Muestras",
               values_to = "Fluorescencia") 

Curvas_amplif3
## # A tibble: 306 × 3
##    Ciclo Muestras Fluorescencia
##    <int> <chr>            <dbl>
##  1     1 Equipo_1         -9.48
##  2     1 Equipo_2         -4.63
##  3     1 Equipo_3        -11.8 
##  4     1 Equipo_4        -26.3 
##  5     1 Equipo_5         -5.85
##  6     1 Equipo_6        -10.6 
##  7     2 Equipo_1         -8.24
##  8     2 Equipo_2          1.42
##  9     2 Equipo_3         -8.05
## 10     2 Equipo_4         -9.48
## # ℹ 296 more rows

Graficar

Grafica_amplif <- ggplot(data = Curvas_amplif3,
                         mapping = aes(x = Ciclo,
                                       y = Fluorescencia,
                                       color = Muestras)) +
  geom_line(linewidth = 1)

Grafica_amplif 

Mejorar la gráfica grupal

library(ggplot2)

threshold <- 50

Grafica_amplif <- ggplot(
  data = Curvas_amplif3,
  aes(x = Ciclo, y = Fluorescencia, color = Muestras)
) +
  geom_line(linewidth = 1) +
  
  # Línea de threshold
  geom_hline(yintercept = threshold,
             linetype = "dashed",
             linewidth = 0.8,
             color = "black") +
  
  # Etiqueta del threshold
  annotate("text",
           x = max(Curvas_amplif3$Ciclo) * 0.85,
           y = threshold + 10,
           label = "Threshold",
           size = 4,
           color = "black") +
  
  # Colores más formales
  scale_color_brewer(palette = "Dark2") +
  
  # Etiquetas formales
  labs(
    title = "Curvas de amplificación por PCR",
    subtitle = "Detección de fase exponencial y umbral de fluorescencia",
    x = "Número de ciclos",
    y = "Fluorescencia (RFU)",
    color = "Muestra"
  ) +
  
  # Tema más formal
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(face = "bold", size = 16),
    plot.subtitle = element_text(size = 12),
    axis.title = element_text(face = "bold"),
    legend.position = "right",
    panel.grid.minor = element_blank()
  )

Grafica_amplif

Aislar gráfica del equipo

# Instalación y carga de paquetes
if(!require(pacman)) install.packages("pacman")
library(pacman)

p_load(ggplot2, dplyr, vroom)

# Cargar datos
Datos_curva <- vroom(file = "https://raw.githubusercontent.com/ManuelLaraMVZ/Metabolomica_2026_1/refs/heads/main/Amplificaci%C3%B3n-RT-qPCR-20261_G1.csv")
## Rows: 51 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (7): Cycle, A1, A2, A3, A4, A5, A6
## 
## ℹ 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.
# Seleccionar solo Cycle y A6 (Equipo 6)
Curva_PCR_P2 <- Datos_curva %>%
  select(Cycle, A6)

# Definir threshold (ajustado a la dinámica de A6)
threshold <- 100

# Crear gráfica
Grafica_curva_PCR_P2 <- ggplot(Curva_PCR_P2,
                              aes(x = Cycle, y = A6)) +
  
  # Curva principal
  geom_line(color = "#5A0F2E", linewidth = 1.2) +
  geom_point(size = 1.8, color = "#5A0F2E", alpha = 0.7) +
  
  # Threshold
  geom_hline(yintercept = threshold,
             linetype = "dashed",
             linewidth = 0.9,
             color = "black") +
  
  annotate("text",
           x = max(Curva_PCR_P2$Cycle) * 0.7,
           y = threshold + 20,
           label = "Threshold",
           size = 4) +
  
  # Etiquetas 
  labs(
    x = "Número de ciclos",
    y = "Fluorescencia (RFU)",
    title = "Curva de amplificación RT-qPCR",
    subtitle = "Equipo 6 (Muestra A6) – Corteza cerebral de rata",
    caption = "Carrillo Garnica Samantha; Serranía Reinada Edith; Oropeza Durán Elisa Natalia; Garduño Martínez Zyanya Paola (SZEN)"
  ) +
  
  # Tema 
  theme_minimal(base_size = 14, base_family = "serif") +
  theme(
    plot.title = element_text(face = "bold", size = 16),
    plot.subtitle = element_text(size = 12),
    axis.title = element_text(face = "bold"),
    panel.grid.minor = element_blank()
  )

Grafica_curva_PCR_P2