diff --git a/Book/Racimo/data2023.md b/Book/Racimo/data2023.md index 91d074e63a97cfacd8943c16f3ccc5178d9d44e0..3ce7dbc5ee72b37cda7d039cab069b1929092fba 100644 --- a/Book/Racimo/data2023.md +++ b/Book/Racimo/data2023.md @@ -162,6 +162,9 @@ display(bucaramanga_map) import pandas as pd import numpy as np +import matplotlib.pyplot as plt +import matplotlib.dates as mdates + import plotly.express as px import plotly.graph_objects as go @@ -176,6 +179,9 @@ Estaciones = [('E2_00023','Grupo Halley',7.1393716,-73.1210968), ('mE1_00012','I.E. Café Madrid',7.1631654, -73.14033300) ] +fecha_inicio = "2023-02-24 00:00:00" +fecha_fin = "2023-12-20 00:00:00" + Nest=len(Estaciones) data=[[] for i in range(Nest)] @@ -204,86 +210,60 @@ for i in range(1,Nest): data[i]['Estacion'] = est[1] data[i]['id_est'] = int(i) -for i in range(1,Nest): - data[i] = data[i].assign(row_number=range(len(data[i]))) - data[i]['ts'] = data[i].index - data[i].set_index(['row_number'], inplace=True) - dat[i] = dat[i].assign(row_number=range(len(dat[i]))) - dat[i]['ts'] = dat[i].index - dat[i].set_index(['row_number'], inplace=True) -data_all = data[1].copy() -dat_all = dat[1].copy() -for i in range(2,Nest): - data_all = data_all.merge(data[i], how='outer') - dat_all = dat_all.merge(dat[i], how='outer') +fig = plt.subplots(figsize=(20,20)) +col = 2 +row = int( (Nest-1)/col ) +i=0; j=0 +for ii in range(1,Nest): + ax = plt.subplot2grid((row,col), (j,i) ) + # Crear gráfico + data[ii].pm25.plot(ax=ax,label=' ' , marker='o',ls="", markersize=0.5, alpha=0.2) + dat[ii].pm25_r.plot(ax=ax,label=' Promedio PM 25 ', ls="-", color="navy") -fig = px.scatter(data_all, x="ts", y="pm25", - color="Estacion", hover_name="Estacion" - ) + ax.axhline(y=37, color='r', linestyle='--', label='Nivel Máximo Permisible 24 horas (37 $\mu g /m^3$)') + ax.axhline(y=12, color='orange', linestyle='--', label='Nivel Aceptable Permisible 24 horas (12 $\mu g /m^3$)') + Ndat= dat[ii].shape[0] + ax.text(dat[ii].index[int(0.5*Ndat)], 50, Estaciones[ii][1], ha="center", va="bottom", fontsize=25, fontweight="bold") -fig2 = px.line(dat_all, x="ts", y="pm25_r", - color="Estacion", - hover_name="Estacion" ) - - -fig.update_traces(marker={'size': 2, 'opacity':0.3 }) - -fig3 = go.Figure(data=fig.data + fig2.data) - -fig3.add_hline(y=12, line_dash="dot", row="all", col="all", - annotation_text="<b>Nivel Aceptable Permisible 24 horas</b> <br> (12 \mu g /m^3)", - annotation_position="bottom right", - line_color="yellow", - annotation=dict(font_size=12, font_family="Times New Roman"),) - -fig3.add_hline(y=37, line_dash="dot", row="all", col="all", - annotation_text="<b>Nivel Máximo Permisible 24 horas</b> <br> (37 \mu g /m^3)", - annotation_position="bottom right", - line_color="red", - annotation=dict(font_size=12, font_family="Times New Roman"),) - -fig3.update_layout ( xaxis_title="Fecha", - yaxis_title="PM 25 [ \mu g / m^3 ]", - autosize=True, - #width=790, - #height=500, - margin=dict( - l=50, - r=50, - b=50, - t=50, - pad=4), - font=dict( - family="Rockwell", - size=12, - #color="RebeccaPurple" - ), - legend=dict( - title=None, orientation="h", y=1.05, yanchor="bottom", x=0.5, xanchor="center" - ), - plot_bgcolor='rgba(0,0,0,0)' - ) - - -fig3.update_xaxes( ticks='outside', - showline=True, - linecolor='black', - #mirror=True, - #range=[1600,2020], - ) - -fig3.update_yaxes( #ticks='outside', - #showline=True, - #linecolor='black', - #mirror=True, - range=[-2,75], - ) - -fig3.show() + if i==0: + ax.set_ylabel("PM 25 $[\, \mu g / m^3\, ]$", fontsize=25, fontweight="bold") + ax.tick_params(which='major', pad=1, length=8, labelsize=15, direction="inout", width=1.5) + + + if j==0: + ax.legend(loc="upper left") + else: + ax.axes.yaxis.set_visible(False) + + + if j==(row-1): + ax.xaxis.set_major_formatter(mdates.DateFormatter('%b')) + plt.xticks(rotation=0) + ax.set_xlabel("") + #ax.xaxis.set_major_locator(mdates.DayLocator(interval=32)) + ax.tick_params(which='minor', labelsize=18, length=8) + + else: + ax.axes.xaxis.set_visible(False) + + + ax.set_ylim(-2., 75) + ax.set_xlim(fecha_inicio, fecha_fin) + + i+=1 + if i > (col-1): + i=0 + j+=1 + + +plt.subplots_adjust(left=0.06, bottom=0.1, right=0.99, top=0.99, wspace=0.01, hspace=0) + +plt.show() + ``` @@ -315,6 +295,7 @@ Estaciones = [('E2_00023','Grupo Halley',7.1393716,-73.1210968), ('mE1_00012','I.E. Café Madrid',7.1631654, -73.14033300) ] + Nest=len(Estaciones) data=[[] for i in range(Nest)]