tx3bas commited on
Commit
bbeded8
·
verified ·
1 Parent(s): a9a4206

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -41
app.py CHANGED
@@ -1,7 +1,6 @@
1
  import streamlit as st
2
  import plotly.express as px
3
  import pandas as pd
4
- import numpy as np
5
  from datetime import datetime
6
 
7
  # Configuración de la página
@@ -33,44 +32,20 @@ chart_title = st.sidebar.text_input("Título del Gráfico", "Gráfico de Franjas
33
  time_format = st.sidebar.selectbox("Formato de Tiempo", ["Día", "Mes", "Año"])
34
 
35
  # Ingresar valores para franjas de tiempo
36
- num_y_vars = st.sidebar.number_input("Número de Variables Y", min_value=1, max_value=10, value=1, step=1, key="num_y_vars")
37
- y_values_list = []
38
- y_names_list = []
39
- for i in range(num_y_vars):
40
- if f"y_start_{i}" not in st.session_state:
41
- st.session_state[f"y_start_{i}"] = '2021-01-01,2021-06-30' # Default start dates
42
- st.session_state[f"y_end_{i}"] = '2021-06-30,2021-12-31' # Default end dates
43
- y_start = st.sidebar.text_area(f"Fechas de Inicio para Y-{i+1} (separadas por comas)", st.session_state[f"y_start_{i}"], key=f"y_start_{i}")
44
- y_end = st.sidebar.text_area(f"Fechas de Fin para Y-{i+1} (separadas por comas)", st.session_state[f"y_end_{i}"], key=f"y_end_{i}")
45
- y_name = st.sidebar.text_input(f"Nombre de la Variable Y-{i+1}", f"Variable Y-{i+1}", key=f"y_name_{i}")
46
- y_values_list.append((y_start, y_end))
47
- y_names_list.append(y_name)
48
-
49
- # Etiquetas personalizadas para los ejes
50
- x_label = st.sidebar.text_input("Etiqueta para el eje X", "Tiempo")
51
- y_label = st.sidebar.text_input("Etiqueta para el eje Y", "Valor")
52
-
53
- # Opciones de personalización
54
- graph_width = st.sidebar.slider("Ancho del Gráfico", min_value=400, max_value=1000, value=800, step=50)
55
- graph_height = st.sidebar.slider("Alto del Gráfico", min_value=300, max_value=800, value=600, step=50)
56
- font_family = st.sidebar.selectbox("Fuente", font_options, index=font_options.index("Times New Roman"))
57
- opacity = st.sidebar.slider("Opacidad (%)", min_value=0, max_value=100, value=30, step=1) / 100
58
-
59
- # Seleccionar color(es) para el gráfico
60
- selected_color = st.sidebar.color_picker("Color", "#24CBA0", key="single_color")
61
- colors = [hex_to_rgba(selected_color, alpha=opacity)]
62
 
63
  # Crear el DataFrame con franjas de tiempo
64
  data_list = []
65
- for idx, (start_dates, end_dates) in enumerate(zip(y_values_list, y_values_list)):
66
- start_dates = [datetime.strptime(date.strip(), '%Y-%m-%d') for date in start_dates.split(",")]
67
- end_dates = [datetime.strptime(date.strip(), '%Y-%m-%d') for date in end_dates.split(",")]
68
- for start, end in zip(start_dates, end_dates):
69
- data_list.append({
70
- 'Variable': y_names_list[idx],
71
- 'Start': start,
72
- 'End': end
73
- })
74
 
75
  data = pd.DataFrame(data_list)
76
 
@@ -92,8 +67,8 @@ else:
92
  tickformat = "%Y"
93
 
94
  fig.update_layout(
95
- xaxis_title=x_label,
96
- yaxis_title=y_label,
97
  xaxis=dict(
98
  tickformat=tickformat,
99
  titlefont=dict(size=14),
@@ -103,10 +78,10 @@ fig.update_layout(
103
  titlefont=dict(size=14),
104
  tickfont=dict(size=12),
105
  ),
106
- width=graph_width,
107
- height=graph_height,
108
  margin=dict(l=60, r=40, t=100, b=40),
109
- font=dict(family=font_family, size=18, color="black")
110
  )
111
 
112
  # Mostrar el gráfico
 
1
  import streamlit as st
2
  import plotly.express as px
3
  import pandas as pd
 
4
  from datetime import datetime
5
 
6
  # Configuración de la página
 
32
  time_format = st.sidebar.selectbox("Formato de Tiempo", ["Día", "Mes", "Año"])
33
 
34
  # Ingresar valores para franjas de tiempo
35
+ y_values = {
36
+ 'Y-1': ('2021-01-01', '2022-12-31'),
37
+ 'Y-2': ('2020-01-01', '2021-12-31'),
38
+ 'Y-3': ('2023-01-01', '2024-12-31')
39
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  # Crear el DataFrame con franjas de tiempo
42
  data_list = []
43
+ for y_name, (start_date, end_date) in y_values.items():
44
+ data_list.append({
45
+ 'Variable': y_name,
46
+ 'Start': datetime.strptime(start_date, '%Y-%m-%d'),
47
+ 'End': datetime.strptime(end_date, '%Y-%m-%d')
48
+ })
 
 
 
49
 
50
  data = pd.DataFrame(data_list)
51
 
 
67
  tickformat = "%Y"
68
 
69
  fig.update_layout(
70
+ xaxis_title="Tiempo",
71
+ yaxis_title="Variables",
72
  xaxis=dict(
73
  tickformat=tickformat,
74
  titlefont=dict(size=14),
 
78
  titlefont=dict(size=14),
79
  tickfont=dict(size=12),
80
  ),
81
+ width=800,
82
+ height=600,
83
  margin=dict(l=60, r=40, t=100, b=40),
84
+ font=dict(family="Times New Roman", size=18, color="black")
85
  )
86
 
87
  # Mostrar el gráfico