Exemplo n.º 1
0
def modo():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    wedges, _, _ = ax.pie(data.modos_values,
                          autopct='%1.1f%%',
                          startangle=90,
                          wedgeprops=dict(width=0.95),
                          colors=[blue, red, yellow, green])

    ax.set_title('Casos por modo de contagio', fontsize=20)
    ax.legend(wedges,
              data.modos_labels,
              loc='lower center',
              bbox_to_anchor=(0.9, 0, 0.5, 0.5))

    FigureCanvasAgg(fig).print_png('modo.png')

    apiurl = config.SERVER_URI + '/modo'
    watermark_text('modo.png', 'modo.png', apiurl, (0, 0))

    return send_file('modo.png')
Exemplo n.º 2
0
def sexo():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    wedges, _, _ = ax.pie([data.mujeres, data.hombres, data.non_sex],
                          autopct='%1.1f%%',
                          startangle=90,
                          wedgeprops=dict(width=0.95),
                          colors=[red, blue, yellow])

    ax.set_title('Casos por sexo', fontsize=20)
    ax.legend(wedges,
              data.sex_labels,
              loc='lower center',
              bbox_to_anchor=(0.9, 0, 0.5, 0.5))

    FigureCanvasAgg(fig).print_png('sexo.png')

    apiurl = config.SERVER_URI + '/sexo'
    watermark_text('sexo.png', 'sexo.png', apiurl, (0, 0))

    return send_file('sexo.png')
Exemplo n.º 3
0
def resume():
    datamodel.updater(data)  # Call to update

    increment = data.diagnosticados[-1] - data.diagnosticados[-2]

    if increment > 0:
        increment = '馃敽{}'.format(str(increment))
    else:
        increment = '馃敾{}'.format(str(increment * -1))

    return jsonify({
        'Diagnosticados':
        data.total_diagnosticados,
        'DiagnosticadosDay':
        str(data.diagnosticados[-1]) + ' ({})'.format(increment),
        'Activos':
        data.total_activos,
        'Recuperados':
        data.total_recuperados,
        'Recuperacion':
        round(data.total_recuperados * 100 / data.total_activos, 1),
        'Evacuados':
        data.total_evacuados,
        'Muertes':
        data.total_muertes,
        'Ingresados':
        data.total_ingresados,
        'Mortalidad':
        round(data.total_muertes * 100 / data.total_diagnosticados, 1),
        'Updated':
        data.fecha
    })
Exemplo n.º 4
0
def summary_graph2():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(9, 6))

    ax = fig.add_subplot(1, 1, 1)

    total = data.total_ingresados + data.total_activos

    wedges, _, _ = ax.pie([data.total_ingresados, data.total_activos],
                          autopct='%1.1f%%',
                          startangle=90,
                          wedgeprops=dict(width=0.95))
    ax.legend(wedges, [
        'Ingresados ' + str(round(data.total_ingresados / total * 100, 1)) +
        '%',
        'Activos ' + str(round(data.total_activos / total * 100, 1)) + '%',
    ],
              loc='lower center',
              bbox_to_anchor=(0.9, 0, 0.5, 1))

    ax.set_title('Activos | Ingresados', fontsize=20)

    FigureCanvasAgg(fig).print_png('summary2.png')

    return send_file('summary2.png')
Exemplo n.º 5
0
def nacionalidad_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'Cubanos': data.cubanos,
        'Extranjeros': data.extranjeros,
    })
Exemplo n.º 6
0
def edad():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    ax.bar([str(k) for k in data.edades.keys()],
           [v for v in data.edades.values()],
           color=red)

    for x, y in enumerate(data.edades.values()):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, 4),
                    ha='center')

    ax.set_title('Distribuci贸n por grupos etarios', fontsize=20)

    FigureCanvasAgg(fig).print_png('edades.png')

    apiurl = config.SERVER_URI + '/edad'
    watermark_text('edades.png', 'edades.png', apiurl, (0, 0))

    return send_file('edades.png')
Exemplo n.º 7
0
def municipio():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(15, 6))

    ax = fig.add_subplot(1, 1, 1)

    ax.barh([str(l[0]) for l in data.municipios_top10],
            [l[1] for l in data.municipios_top10],
            color='orange')

    for i, v in enumerate(data.municipios_top10):
        label = "{} ({}%)".format(
            v[1], round(v[1] * 100 / data.total_diagnosticados, 2))

        ax.annotate(label, (v[1], i),
                    textcoords='offset points',
                    xytext=(2, -3),
                    ha='left')

    ax.set_title('Casos detectados por municipios (Top 10)', fontsize=20)

    FigureCanvasAgg(fig).print_png('municipios.png')

    return send_file('municipios.png')
Exemplo n.º 8
0
def modo_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'labels': data.modos_labels,
        'values': data.modos_values,
    })
Exemplo n.º 9
0
def evolution_fallecidos():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(12, 7))

    ax = fig.add_subplot(1, 1, 1)

    xss = [str(i) for i in range(1, len(data.muertes_acc) + 1)]
    xs = range(0, len(data.muertes_acc))

    ax.plot(xss, data.muertes_acc, 'o-', label='Casos acumulados')
    ax.plot(xss, data.muertes, 'o-', label='Casos en el d铆a')

    for x, y in zip(xs, data.muertes_acc):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, 10),
                    ha='center')

    for x, y in zip(xs, data.muertes):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, -15),
                    ha='center')

    ax.set_title('Evoluci贸n de casos por d铆as (Fallecidos)', fontsize=15)
    fig.legend(frameon=True, fontsize=12)

    FigureCanvasAgg(fig).print_png('fallecidos.png')

    return send_file('fallecidos.png')
Exemplo n.º 10
0
def summary_graph1():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(9, 6))

    ax = fig.add_subplot(1, 1, 1)

    total = data.total_diagnosticados + data.total_recuperados + data.total_evacuados + data.total_muertes

    wedges, _, _ = ax.pie([
        data.total_diagnosticados, data.total_recuperados,
        data.total_evacuados, data.total_muertes
    ],
                          autopct='%1.1f%%',
                          startangle=90,
                          wedgeprops=dict(width=0.95))
    ax.legend(wedges, [
        'Diagnosticados ' +
        str(round(data.total_diagnosticados / total * 100, 1)) + '%',
        'Recuperados ' + str(round(data.total_recuperados / total * 100, 1)) +
        '%',
        'Evacuados ' + str(round(data.total_evacuados / total * 100, 1)) + '%',
        'Fallecidos ' + str(round(data.total_muertes / total * 100, 1)) + '%',
    ],
              loc='lower center',
              bbox_to_anchor=(0.9, 0, 0.5, 1))

    ax.set_title('Resumen', fontsize=20)

    FigureCanvasAgg(fig).print_png('summary1.png')

    return send_file('summary1.png')
Exemplo n.º 11
0
def test():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(15, 6))

    (ax1, ax2) = fig.subplots(1, 2)

    # Test realizados
    xss = [str(k) for k in range(12, data.cant_days + 1)]
    xs = range(0, data.cant_days + 1 - 12)

    ax1.bar(xss, data.cant_tests)
    ax1.bar(xss, data.detected_acc)

    for x, y in zip(xs, data.cant_tests):
        label = "{}".format(y)

        ax1.annotate(label, (x, y),
                     textcoords='offset points',
                     xytext=(0, 4),
                     ha='center')

    ax1.set_title('Tests acumulados por d铆a')

    # Proporci贸n entre casos confirmados y test realizados
    ax2.bar([str(k) for k in range(12, data.cant_days + 1)],
            data.prop_test_vs_detected)

    ax2.set_title('Proporci贸n detectados/tests realizados')

    FigureCanvasAgg(fig).print_png('tests.png')

    return send_file('tests.png')
Exemplo n.º 12
0
def test_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'cant_tests': data.cant_tests,
        'detected_acc': data.detected_acc,
        'prop': data.prop_test_vs_detected,
    })
Exemplo n.º 13
0
def sexo_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'mujeres': data.mujeres,
        'hombres': data.hombres,
        'no determinado': data.non_sex
    })
Exemplo n.º 14
0
def evolution_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'diagnosticados': data.diagnosticados,
        'diagnosticados_acc': data.diagnosticados_acc,
        'fallecidos': data.muertes,
        'fallecidos_acc': data.muertes_acc
    })
Exemplo n.º 15
0
def evolution():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(12, 8))

    ax = fig.add_subplot(1, 1, 1)

    xss = [str(i) for i in range(1, len(data.diagnosticados_acc) + 1)]
    xs = range(0, len(data.diagnosticados_acc))

    ax.plot(xss,
            data.diagnosticados_acc,
            'o-',
            label='Casos acumulados',
            color=red,
            alpha=0.5)
    ax.plot(xss, data.activos_acc, 'o-', label='Casos activos', color=red)
    ax.plot(xss,
            data.diagnosticados,
            'o-',
            label='Casos en el d铆a',
            color=cyan)

    for x, y in zip(xs, data.diagnosticados_acc):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, 10),
                    ha='center')

    for x, y in zip(xs, data.activos_acc):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, 10),
                    ha='center')

    for x, y in zip(xs, data.diagnosticados):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, -17),
                    ha='center')

    ax.set_title('Evoluci贸n de casos por d铆as', fontsize=20)
    fig.legend(frameon=True, fontsize=12)

    FigureCanvasAgg(fig).print_png('evolution.png')

    apiurl = config.SERVER_URI + '/evolution'
    watermark_text('evolution.png', 'evolution.png', apiurl, (0, 0))

    return send_file('evolution.png')
Exemplo n.º 16
0
def reload():
    dat = request.get_json()

    if dat['token'] != config.TOKEN:
        return jsonify({'message': 'updated data'})

    datamodel.updater(data)

    token = {'token': config.TOKEN}
    requests.post(config.BOT_URI, json=token)

    return jsonify({'message': 'Updated Data'})
Exemplo n.º 17
0
def casos_extranjeros():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    ax.bar([str(k) for k in data.paises.keys()],
           [v for v in data.paises.values()])

    ax.set_title('Distribuci贸n por nacionalidad casos extranjeros',
                 fontsize=20)

    FigureCanvasAgg(fig).print_png('paises.png')

    return send_file('paises.png')
Exemplo n.º 18
0
def evolution_fallecidos():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(12, 7))

    ax = fig.add_subplot(1, 1, 1)

    xss = [str(i) for i in range(1, len(data.muertes_acc) + 1)]
    xs = range(0, len(data.muertes_acc))

    ax.plot(xss,
            data.muertes_acc,
            'o-',
            label='Muertes acumuladas',
            color=black)
    ax.plot(xss, data.muertes, 'o-', label='Muertes en el d铆a', color=cyan)

    for x, y in zip(xs, data.muertes_acc):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, 10),
                    ha='center')

    for x, y in zip(xs, data.muertes):
        label = "{}".format(y)

        ax.annotate(label, (x, y),
                    textcoords='offset points',
                    xytext=(0, -15),
                    ha='center')

    ax.set_title('Evoluci贸n de muertes por d铆as', fontsize=15)
    fig.legend(frameon=True, fontsize=12)

    FigureCanvasAgg(fig).print_png('fallecidos.png')

    apiurl = config.SERVER_URI + '/evolution_fallecidos'
    watermark_text('fallecidos.png', 'fallecidos.png', apiurl, (0, 0))

    return send_file('fallecidos.png')
Exemplo n.º 19
0
def nacionalidad():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    wedges, _, _ = ax.pie([data.cubanos, data.extranjeros],
                          autopct='%1.1f%%',
                          startangle=90,
                          wedgeprops=dict(width=0.95))
    ax.legend(wedges, ['Cubanos', 'Extranjeros'],
              loc='lower center',
              bbox_to_anchor=(0.9, 0, 0.5, 1))

    ax.set_title('Casos por nacionalidad', fontsize=20)

    FigureCanvasAgg(fig).print_png('nacionalidad.png')

    return send_file('nacionalidad.png')
Exemplo n.º 20
0
def casos_extranjeros():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    ax.bar([str(k) for k in data.paises.keys()],
           [v for v in data.paises.values()],
           color=red)

    ax.set_title('Distribuci贸n por nacionalidad casos extranjeros',
                 fontsize=20)

    FigureCanvasAgg(fig).print_png('paises.png')

    apiurl = config.SERVER_URI + '/casos_extranjeros'
    watermark_text('paises.png', 'paises.png', apiurl, (0, 0))

    return send_file('paises.png')
Exemplo n.º 21
0
def modo():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(8, 6))

    ax = fig.add_subplot(1, 1, 1)

    wedges, _, _ = ax.pie(data.modos_values,
                          autopct='%1.1f%%',
                          startangle=90,
                          wedgeprops=dict(width=0.95))

    ax.set_title('Casos por modo de contagio', fontsize=20)
    ax.legend(wedges,
              data.modos_labels,
              loc='lower center',
              bbox_to_anchor=(0.9, 0, 0.5, 0.5))

    FigureCanvasAgg(fig).print_png('modo.png')

    return send_file('modo.png')
Exemplo n.º 22
0
def provincia():
    datamodel.updater(data)  # Call to update

    fig = Figure(figsize=(15, 6))

    ax = fig.add_subplot(1, 1, 1)

    provs = []

    provs_values = []

    for i, v in enumerate(data.locations):
        if v[0] != None:
            provs.append(str(v[0]))
        else:
            provs.append('Desconocido')

        provs_values.append(v[1])

        label = "{} ({}%)".format(
            v[1], round(v[1] * 100 / data.total_diagnosticados, 2))

        ax.annotate(label, (v[1], i),
                    textcoords='offset points',
                    xytext=(2, -3),
                    ha='left')

    ax.barh(provs, provs_values, color=red)

    ax.set_title('Casos detectados por provincias', fontsize=20)

    FigureCanvasAgg(fig).print_png('provincias.png')

    apiurl = config.SERVER_URI + '/provincias'
    watermark_text('provincias.png', 'provincias.png', apiurl, (0, 0))

    return send_file('provincias.png')
Exemplo n.º 23
0
def casos_extranjeros_text():
    datamodel.updater(data)  # Call to update

    return jsonify(dict(data.paises))
Exemplo n.º 24
0
def municipio_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'municipios': data.mlocations,
    })
Exemplo n.º 25
0
def provincia_text():
    datamodel.updater(data)  # Call to update

    return jsonify({
        'provincias': data.locations,
    })
Exemplo n.º 26
0
def edad_text():
    datamodel.updater(data)  # Call to update

    return jsonify(data.edades)