In [3]:
from IPython.display import HTML
from IPython.display import Image
Image(filename='logo_obs.png',width=100,height=100)
Out[3]:
In [4]:
from IPython.display import HTML
HTML('''<script>
code_show=true; 
function code_toggle() {
 if (code_show){
 $('div.input').hide();
 } else {
 $('div.input').show();
 }
 code_show = !code_show
} 
$( document ).ready(code_toggle);
</script>
.''')
Out[4]:
.
In [5]:
Image(filename='logo_uninorte.png',width=100,height=100)
Out[5]:

Gráficos interactivos de series de tiempo río Magdalena

En los siguientes gráficos interactivos se pueden visualizar las series de tiempo de las estaciones limnimetricas que se encuentran a lo largo del río Magdalena (Bocas de Ceniza - Puerto Berrío).

Adicionalmente, con los modelos de regresión lineal que se han estimado de estos datos se tienen las series temporales de caudales líquidos y caudales sólidos.

In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from bokeh.layouts import gridplot
from bokeh.plotting import figure, show, output_file
from bokeh.io import push_notebook,show,output_notebook
from bokeh.models import ColumnDataSource,HoverTool
output_notebook()
Loading BokehJS ...
In [12]:
def datetime(x):
    return np.array(x, dtype=np.datetime64)

def importarArchivo(nombreArchivo,separador,fechaInicio,fechaFin):
    Estacion=pd.read_csv(nombreArchivo, sep=separador, header=None)
    Estacion_array=np.array(Estacion)
    Estacion_array=Estacion_array.flatten('F')
    Estacion=pd.DataFrame(Estacion_array)
    fechasEstacion=pd.date_range(start=fechaInicio, end=fechaFin, freq='D')
    leap = []
    for i in fechasEstacion:                  # Para quitar el 29 de febrero
        if i.month==2 and i.day ==29:
            leap.append(i)
    fechasEstacion=fechasEstacion.drop(leap)
    Estacion=Estacion.set_index(fechasEstacion)
    Estacion.columns=['Nivel']
    Estacion['Fecha']=Estacion.index.values
    Estacion['mmdd'] = Estacion.Fecha.apply(lambda x: x.strftime('%m-%d'))
    return Estacion
TEBSA=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\TEBSA199631122019.txt','\t','01/01/1996','31/12/2019')
SanP=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\SAN_PEDRITO197931012020.txt','\t','01/01/1979','31/12/2020')
Calamar=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\Calamar196731012020.txt','\t','01/01/1967','31/12/2020')
Tenerife=importarArchivo('G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\TENERIFE197331122019.txt','\t','01/01/1973','31/12/2019')
Plato=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\PLATO197631012020.txt','\t','01/01/1976','31/12/2020')
Magangue=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\MAGANGUE197331012020.txt','\t','01/01/1973','31/12/2020')
Barbosa=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\BarbosaM197313092019.txt','\t','01/01/1973','31/12/2019')
Coyongal=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\CoyongalM197531012020.txt','\t','01/01/1975','31/12/2020')
Armenia=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\ArmeniaM197331072019.txt','\t','01/01/1973','31/12/2019')
RioNuevo=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\RioNuevoM197431122019.txt','\t','01/01/1974','31/12/2019')
LasPalomas=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\LasPalomasM197331122019.txt','\t','01/01/1973','31/12/2019')
LasAguadas=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Diciembre 2019\LasAguadasM197331122019.txt','\t','01/01/1973','31/12/2019')
ElBanco=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\ElBancoM197231012020.txt','\t','01/01/1972','31/12/2020')
Penoncito=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\PenoncitoM197231122019.txt','\t','01/01/1972','31/12/2019')
Regidor=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\RegidorM197331082019.txt','\t','01/01/1973','31/12/2019')
LaGloria=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\LaGloriaM199131012020.txt','\t','01/01/1991','31/12/2020')
Gamarra=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Mayo 2019\GamarraM198116052019.txt','\t','01/01/1981','31/12/2019')
GamarraAUT=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\GamarraAUTM201331012020.txt','\t','01/01/2013','31/12/2020')
ElContento=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\ElContentoM197431012020.txt','\t','01/01/1974','31/12/2020')
#Badillo=importarArchivo(r'.txt','\t','01/01/1974','31/12/2019')
SitioNuevo=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\SitioNuevoM197931012020.txt','\t','01/01/1979','31/12/2020')
SanPablo=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\SanPabloM197731012020.txt','\t','01/01/1977','31/12/2020')
PuertoWilches=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\PuertoWilchesM197331012020.txt','\t','01/01/1973','31/12/2020')
Barrancabermeja=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\BarrancabermejaM197131012020.txt','\t','01/01/1971','31/12/2020')
#PenasBlancas=importarArchivo(r'.txt','\t','01/01/1977','31/12/2019')
ElTagual=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informacion del rio\HIDROLOGIA\Niveles estaciones\ElTagualM20082019.txt','\t','01/01/2008','31/12/2019')
PuertoBerrio=importarArchivo(r'G:\Mi unidad\OBS\Rio\Informes Mensuales\Enero 2020\Puerto_BerrioM197231012020.txt','\t','01/01/1972','31/12/2020')

Calamar['Caudal']=1284*Calamar.Nivel
Calamar['Caudals']=0.1221*Calamar.Caudal**1.6647
In [13]:
sourceCal = ColumnDataSource(data={
    'date'      : datetime(Calamar['Fecha']),
    'Nivel' : Calamar['Nivel'],
    'Q'    : Calamar['Caudal'],
    'Qs' : Calamar['Caudals']
})
sourceQ=ColumnDataSource(data={
    'date'      : datetime(Calamar['Fecha']),
    'Nivel' : Calamar['Nivel'],
    'Q'    : Calamar['Caudal'],
    'Qs' : Calamar['Caudals']
})
sourceQs=ColumnDataSource(data={
    'date'      : datetime(Calamar['Fecha']),
    'Nivel' : Calamar['Nivel'],
    'Q'    : Calamar['Caudal'],
    'Qs':Calamar['Caudals']
})
sourceTEBSA= ColumnDataSource(data={
    'date'      : datetime(TEBSA['Fecha']),
    'Nivel' : TEBSA['Nivel']
})
sourceMag= ColumnDataSource(data={
    'date'      : datetime(Magangue['Fecha']),
    'Nivel' : Magangue['Nivel']
})
sourceTen= ColumnDataSource(data={
    'date'      : datetime(Tenerife['Fecha']),
    'Nivel' : Tenerife['Nivel']
})
sourcePlato= ColumnDataSource(data={
    'date'      : datetime(Plato['Fecha']),
    'Nivel' : Plato['Nivel']
})
sourceSanP= ColumnDataSource(data={
   'date'      : datetime(SanP['Fecha']),
   'Nivel' : SanP['Nivel']
})

sourceBarbosa= ColumnDataSource(data={
    'date'      : datetime(Barbosa['Fecha']),
    'Nivel' : Barbosa['Nivel']
})
sourceCoyongal= ColumnDataSource(data={
    'date'      : datetime(Coyongal['Fecha']),
    'Nivel' : Coyongal['Nivel']
})
sourceArmenia= ColumnDataSource(data={
    'date'      : datetime(Armenia['Fecha']),
    'Nivel' : Armenia['Nivel']
})
sourceRioNuevo= ColumnDataSource(data={
    'date'      : datetime(RioNuevo['Fecha']),
    'Nivel' : RioNuevo['Nivel']
})
sourceLasPalomas= ColumnDataSource(data={
    'date'      : datetime(LasPalomas['Fecha']),
    'Nivel' : LasPalomas['Nivel']
})
sourceLasAguadas= ColumnDataSource(data={
    'date'      : datetime(LasAguadas['Fecha']),
    'Nivel' : LasAguadas['Nivel']
})
sourceElBanco= ColumnDataSource(data={
    'date'      : datetime(ElBanco['Fecha']),
    'Nivel' : ElBanco['Nivel']
})
sourcePenoncito= ColumnDataSource(data={
    'date'      : datetime(Penoncito['Fecha']),
    'Nivel' : Penoncito['Nivel']
})
sourceLaGloria= ColumnDataSource(data={
    'date'      : datetime(LaGloria['Fecha']),
    'Nivel' : LaGloria['Nivel']
})
sourceGamarraAUT= ColumnDataSource(data={
    'date'      : datetime(GamarraAUT['Fecha']),
    'Nivel' : GamarraAUT['Nivel']
})
sourceGamarra= ColumnDataSource(data={
    'date'      : datetime(Gamarra['Fecha']),
    'Nivel' : Gamarra['Nivel']
})
sourceElContento= ColumnDataSource(data={
    'date'      : datetime(ElContento['Fecha']),
    'Nivel' : ElContento['Nivel']
})
#sourceBadillo= ColumnDataSource(data={
#    'date'      : datetime(Badillo['Fecha']),
#    'Nivel' : Badillo['Nivel']
#})
sourceSitioNuevo= ColumnDataSource(data={
    'date'      : datetime(SitioNuevo['Fecha']),
    'Nivel' : SitioNuevo['Nivel']
})
sourceRegidor= ColumnDataSource(data={
    'date'      : datetime(Regidor['Fecha']),
    'Nivel' : Regidor['Nivel']
})
sourceSanPablo= ColumnDataSource(data={
    'date'      : datetime(SanPablo['Fecha']),
    'Nivel' : SanPablo['Nivel']
})
sourcePuertoWilches= ColumnDataSource(data={
    'date'      : datetime(PuertoWilches['Fecha']),
    'Nivel' : PuertoWilches['Nivel']
})
sourceBarrancabermeja= ColumnDataSource(data={
    'date'      : datetime(Barrancabermeja['Fecha']),
    'Nivel' : Barrancabermeja['Nivel']
})
#sourcePenasBlancas= ColumnDataSource(data={
#    'date'      : datetime(PenasBlancas['Fecha']),
#    'Nivel' : PenasBlancas['Nivel']
#})
sourceElTagual= ColumnDataSource(data={
    'date'      : datetime(ElTagual['Fecha']),
    'Nivel' : ElTagual['Nivel']
})
sourcePuertoBerrio= ColumnDataSource(data={
    'date'      : datetime(PuertoBerrio['Fecha']),
    'Nivel' : PuertoBerrio['Nivel']
})

p1= figure(x_axis_type="datetime", tools='pan,box_zoom,wheel_zoom,reset',
           title="Niveles estaciones río Magdalena Bocas de Ceniza - Puerto Berrío", plot_width=950, plot_height=1400)
p1.xaxis.axis_label = 'Fecha'
p1.yaxis.axis_label = 'Nivel (m.s.n.m.)'

p1.line(x='date', y='Nivel', color='royalblue', legend='Calamar',source=sourceCal)
p1.line(x='date', y='Nivel', color='chocolate', legend='TEBSA',source=sourceTEBSA)
p1.line(x='date', y='Nivel', color='turquoise', legend='San Pedrito',source=sourceSanP)
p1.line(x='date', y='Nivel', color='tomato', legend='Tenerife',source=sourceTen)
p1.line(x='date', y='Nivel', color='darkgreen', legend='Plato',source=sourcePlato)
p1.line(x='date', y='Nivel', color='indigo', legend='Magangue',source=sourceMag)

p1.line(x='date', y='Nivel', color='teal', legend='Barbosa',source=sourceBarbosa)
p1.line(x='date', y='Nivel', color='steelblue', legend='Coyongal',source=sourceCoyongal)
p1.line(x='date', y='Nivel', color='thistle', legend='Armenia',source=sourceArmenia)
p1.line(x='date', y='Nivel', color='palevioletred', legend='Rio Nuevo',source=sourceRioNuevo)
p1.line(x='date', y='Nivel', color='darkgoldenrod', legend='Las Palomas',source=sourceLasPalomas)
p1.line(x='date', y='Nivel', color='slategrey', legend='Las Aguadas',source=sourceLasAguadas)
p1.line(x='date', y='Nivel', color='orchid', legend='El Banco',source=sourceElBanco)
p1.line(x='date', y='Nivel', color='crimson', legend='Peñoncito',source=sourcePenoncito)
p1.line(x='date', y='Nivel', color='deeppink', legend='Regidor',source=sourceRegidor)
p1.line(x='date', y='Nivel', color='mediumseagreen', legend='La Gloria',source=sourceLaGloria)
p1.line(x='date', y='Nivel', color='lightsalmon', legend='Gamarra',source=sourceGamarra)
p1.line(x='date', y='Nivel', color='orange', legend='Gamarra AUT',source=sourceGamarraAUT)
p1.line(x='date', y='Nivel', color='mediumpurple', legend='El Contento',source=sourceElContento)
#p1.line(x='date', y='Nivel', color='', legend='Badillo',source=sourceBadillo)
p1.line(x='date', y='Nivel', color='indianred', legend='Sitio Nuevo',source=sourceSitioNuevo)
p1.line(x='date', y='Nivel', color='olive', legend='San Pablo',source=sourceSanPablo)
p1.line(x='date', y='Nivel', color='maroon', legend='Puerto Wilches',source=sourcePuertoWilches)
p1.line(x='date', y='Nivel', color='skyblue', legend='Barrancabermeja',source=sourceBarrancabermeja)
#p1.line(x='date', y='Nivel', color='', legend='Peñas Blancas',source=sourcePenas Blancas)
p1.line(x='date', y='Nivel', color='limegreen', legend='El Tagual',source=sourceElTagual)
p1.line(x='date', y='Nivel', color='purple', legend='Puerto Berrio',source=sourcePuertoBerrio)



p1.legend.location = "top_left"          
p1.add_tools(HoverTool(
    tooltips=[
        ( 'date',   '@date{%F}'),
        ( 'Nivel',  '$y m.s.n.m.' ),
        ( 'Q', '@{Q}{%0.0f m3/s}'),
        ( 'Qs', '@{Qs}{%0.0f ton/día}')
    ],

    formatters={
        'date'      : 'datetime', # use 'datetime' formatter for 'date' field   # use 'printf' formatter for 'adj close' field
        'Q'    : 'printf' ,                    # use default 'numeral' formatter for other fields
    'Qs'    : 'printf'
    },

    # display a tooltip whenever the cursor is vertically in line with a glyph
    # ACTIVAR SI ES NECESARIO mode='vline'
))



p2 = figure(x_axis_type="datetime", title="Caudal medio Las Flores",plot_width=480, plot_height=450,
            tools='pan,box_zoom,wheel_zoom,reset', x_range=p1.x_range)
p2.xaxis.axis_label = ''
p2.yaxis.axis_label = 'Caudal (m3/s)'
p2.line(x='date', y='Q',source=sourceCal,color='navy')
p2.add_tools(HoverTool(
    tooltips=[
        ( 'Fecha',   '@date{%F}'),
        ( 'Nivel',  '@{Nivel} m.s.n.m.' ),
        ( 'Q', '@{Q}{%0.0f m3/s}'),
        ( 'Qs', '@{Qs}{%.0f ton/día}')
    ],

    formatters={
        'date'      : 'datetime', # use 'datetime' formatter for 'date' field   # use 'printf' formatter for 'adj close' field
        'Q'    : 'printf' ,                    # use default 'numeral' formatter for other fields
    'Qs'    : 'printf'
    },

    # display a tooltip whenever the cursor is vertically in line with a glyph
    # ACTIVAR SI ES NECESARIO mode='vline'
))
p3 = figure(x_axis_type="datetime", title=" Transporte total de sedimentos en suspensión sector  Las Flores",
            plot_width=480, plot_height=450,
            tools='pan,box_zoom,wheel_zoom,reset', x_range=p1.x_range)
p3.xaxis.axis_label = ''
p3.yaxis.axis_label = 'Qs (Ton/día)'
p3.line(x='date', y='Qs',source=sourceCal,color='brown')
p3.add_tools(HoverTool(
    tooltips=[
        ( 'Fecha',   '@date{%F}'),
        ( 'Nivel',  '@{Nivel} m.s.n.m.' ),
        ( 'Q', '@{Q}{%0.0f m3/s}'),
        ( 'Qs', '@{Qs}{%.0f ton/día}')
    ],

    formatters={
        'date'      : 'datetime', # use 'datetime' formatter for 'date' field   # use 'printf' formatter for 'adj close' field
        'Q'    : 'printf' ,                    # use default 'numeral' formatter for other fields
    'Qs'    : 'printf'
    },

    # display a tooltip whenever the cursor is vertically in line with a glyph
    # ACTIVAR SI ES NECESARIO mode='vline'
))
p1.legend.click_policy="hide"


show(gridplot([[p1],[p2,p3]],toolbar_location='left'))