Introducir archivos PDF de CILAS para usar:
input_a
Del CSV generado se crean los gráficos necesarios de cada muestra, y el diagrama Ternario de Shepard 1979
import os
# Ruta a la carpeta que contiene los archivos CSV
ruta_carpeta = '/work/file_input_uploads' # Reemplaza con la ruta de tu carpeta
# Listar todos los archivos en la carpeta
archivos = os.listdir(ruta_carpeta)
# Filtrar los archivos CSV
csv_archivos = [archivo for archivo in archivos if archivo.endswith('.csv')]
# Mostrar los archivos CSV encontrados
for archivo in csv_archivos:
print(archivo)
Run to view results
Copiar el nombre del archivo csv con el que se quiere trabajar y pegarlo en el casillero de abajo
input_csv
import pandas as pd
import plotly.express as px
import plotly.graph_objects as go
dfaux = pd.DataFrame({
'Sample': samples,
'Lim': lims,
'Arc': arcs,
'Are': ares
})
# Crear gráfico ternario interactivo
fig = px.scatter_ternary(dfaux, b='Arc', a='Lim', c='Are', text=dfaux.index,
title="Diagrama Ternario de Arc, Lim, y Are")
# Añadir una línea horizontal al 75% de Limo
fig.add_trace(go.Scatterternary(
a=[75, 75], # Constante para Lim
b=[0, 25], # Varia de 0 a 25 para Arc
c=[25, 0], # Varia de 25 a 0 para Are
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[25, 0],
b=[75, 75],
c=[0, 25],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[0, 25],
b=[25, 0],
c=[75, 75],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[75, 60],
b=[12.5, 20],
c=[12.5, 20],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[50, 40],
b=[50, 40],
c=[0, 20],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[0, 20],
b=[50, 40],
c=[50, 40],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[50, 40],
b=[0, 20],
c=[50, 40],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[60, 20],
b=[20, 60],
c=[20, 20],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[20, 20],
b=[60, 20],
c=[20, 60],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[20, 60],
b=[20, 20],
c=[60, 20],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[20, 12.5],
b=[60, 75],
c=[20, 12.5],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una línea diagonal
fig.add_trace(go.Scatterternary(
a=[12.5, 20],
b=[12.5, 20],
c=[75, 60],
mode='lines',
line=dict(color='black', width=2),
showlegend=False
))
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Silt", # Texto de la anotación
x=0.5, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.8, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Sand", # Texto de la anotación
x=0.9, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.1, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Clay", # Texto de la anotación
x=0.1, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.1, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Sandy Clay", # Texto de la anotación
x=0.3, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.1, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Clayey Sand", # Texto de la anotación
x=0.65, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.1, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Silt Clay", # Texto de la anotación
x=0.2, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.3, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Clayey Silt", # Texto de la anotación
x=0.4, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.6, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Silt Sand", # Texto de la anotación
x=0.8, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.3, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Añadir una anotación en una coordenada específica
fig.add_annotation(
text="Sand Silt", # Texto de la anotación
x=0.6, # Coordenada en el espacio ternario (normalmente es necesario ajustar)
y=0.6, # Coordenada en el espacio ternario
showarrow=False,
arrowhead=2,
ax=0, # Desplazamiento del texto respecto al punto en la dirección x
ay=0 # Desplazamiento del texto respecto al punto en la dirección y
)
# Configurar el diseño del gráfico
fig.update_layout(
ternary=dict(
sum=100,
aaxis=dict(
title="%Silt (63-4 \u03BCm)",
tickvals=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
ticktext=["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"],
linewidth=2,
showline=True
),
baxis=dict(
title="%Clay (<4 \u03BCm)",
tickvals=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
ticktext=["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"],
linewidth=2,
showline=True
),
caxis=dict(
title="%Sand (2000-63 \u03BCm)",
tickvals=[0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100],
ticktext=["0%", "10%", "20%", "30%", "40%", "50%", "60%", "70%", "80%", "90%", "100%"],
linewidth=2,
showline=True
)
),
title="Diagrama Ternario Arcilla-Limo-Arena Sheppard 1979",
autosize=False,
width=700, # Ancho del gráfico
height=700, # Alto del gráfico
margin=dict(t=100, r=100, b=100, l=100) # Márgenes para ajustar la disposición
)
# Mostrar gráfico
fig.show()
# Imprimir DataFrame
print(dfaux)
Run to view results
Sección para graficar la distribución de cada muestra
Run to view results
Run to view results
input_1
import matplotlib.pyplot as plt
import numpy as np
# Seleccionar una muestra
idx = df[df.iloc[:, 0] == input_1].index[0]
# Extraer la fila seleccionada y las dos siguientes
filas_relevantes = df.iloc[idx:idx+3]
# Graficar el histograma
plt.figure(figsize=(15, 10))
# Subgráfico 1: Histograma
plt.subplot(2, 1, 1)
plt.bar(filas_relevantes.iloc[0,2:], filas_relevantes.iloc[2,2:], width=0.1, color='skyblue', edgecolor='black')
# Ajustar el eje x a escala logarítmica
plt.xscale('log')
plt.grid(True)
plt.xlabel('Diámetro (x)')
plt.ylabel('Frecuencia (q3)')
plt.title('Histograma de Frecuencias')
# Subgráfico 2: Función de Densidad de Probabilidad
plt.subplot(2, 1, 2)
plt.plot(filas_relevantes.iloc[0,2:], filas_relevantes.iloc[1,2:], marker='o', linestyle='-', color='orange')
# Ajustar el eje x a escala logarítmica
plt.xscale('log')
plt.xlabel('Diámetro (x)')
plt.ylabel('Frecuencia Acumulada (Q3)')
plt.title('Función de Densidad de Probabilidad')
plt.grid(True)
plt.tight_layout()
plt.show()
Run to view results
Elegir archivo (abajo a la derecha dá la opción de exportarlo):
downloads
# Ruta a la carpeta que contiene los archivos CSV
ruta_carpeta = '/work/file_input_uploads/'
pd.read_csv(ruta_carpeta+downloads).T
Run to view results