jueves, 27 de abril de 2023

Como crear una presentación concurrida "Bar Chart Race" en Google Sheets

 BAR CHART RACE

Cuando tenemos un historial de datos, sabemos que nos pueden proporcionar información valiosa y la mejor forma para sacar provecho de esos datos es utilizando gráficos.

Ahora te voy a explicar cómo podemos insertar un tipo de gráfico animado ó presentación llamado bar chart race, qué significa carrera de gráfico de barras, el cual nos muestra cómo se comportan nuestros datos a lo largo del tiempo de una manera interactiva.



Disponer nuestra data

Todos nuestros datos deben estar organizados, limpios, en otras palabras preparados, y antes que nada debemos pensar primero en lo que queremos investigar en base a nuestra información. La data que vamos a utilizar muestra información del valor de mercado de varias empresas mundiales a lo largo de los años.

Cada fila o dato nos indica el valor en dolares de una empresa asociada a una categoria desde el año 2000 al 2022. La fecha está con formato de dia mes y año, en mi ejemplo usaré el año, pero eso no es obstáculo para que nuestro gráfico muestre el recorrido en dias ó meses, eso depende de como quieres mostrar la animación. La catgoría de nuestra data se usará para distinguir y comparar las industrias que se van mostrando en cada barra horizontal de nuestra gráfica.

Tomar en cuenta el orden de los datos "date, name, category, value"; si tus datos están organizados de diferente forma, debes ordenarlos para adaptarlos el formato de la data de ejemplo para que te funcione correctamente.


Creación de funciones de Apps Script

La interprestación de lo que queremos realizar se resumen en:

Código.gs

Entonces para empezar, abrimos el menú Extensiones y damos clic en Apps Script.

Reemplazamos el código que aparece por default por el siguiente:

//creación de menú "Gráficas" que llama a la función que genera la gráfica

function onOpen() {
 SpreadsheetApp.getUi()
  .createMenu("Gráficas")
    .addItem("Generar gráfica""grafica_html")
    .addToUi();
}

// función para leer los datos de nuestra hoja de cálculo
function leer_datos() {
  var ultima_fila = SpreadsheetApp.getActiveSheet().getLastRow();
  var ultima_columna = SpreadsheetApp.getActiveSheet().getLastColumn();
  var dataRange = SpreadsheetApp.getActiveSheet().getRange(fila_inicial=2columna_inicial=1,ultima_filaultima_columna);
  var data_values = dataRange.getValues();

  // se mapea cada elemento del arreglo a una propiedad en el orden que vienen las columnas y se filtran valores de name vacíos
  return data_values.map(([datenamecategoryvalue]) => (
    { datenamecategoryvalue }))
    .filter(d => (d.name == "" ? false : true));
}

//función para graficar los datos
function grafica_html() {
  var html = HtmlService.createTemplateFromFile('grafica');
  html.datos = leer_datos();
  SpreadsheetApp.getUi().showModalDialog(html.evaluate().setHeight(800).setWidth(1000),"Gráfica");
}

Componentes HTML

Ahora tenemos que crear los archivos html necesarios para graficar.

El primer archivo de llama grafica, lo creamos dando clic en el signo +, elejimos la opción HTML y lo nombramos.

Gráfica.html

Dentro de grafica.html reemplazamos el default por el siguiente código:

<!DOCTYPE html>
<html>
  <head>
    <style>
      htmlbody {
        overflow: hidden;
        font-family: ArialHelveticasans-serif;
        width: 100%;
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #bar-chart-race > text:last-child {
          font-size: 4em !important;
          font-weight: bold !important;
      }
      #bar-chart-race g ~ g ~ g text {
        font-weight: bold !important;
      }
    </style>
    <base target="_top">
  </head>
  <body>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/7.6.1/d3.min.js"></script>
    <?!= HtmlService.createHtmlOutputFromFile('chartjs').getContent(); ?>
    <script>
      const data_sheet = <?!= JSON.stringify(datos) ?>;
      const data = data_sheet.map(x => {
        x.date = new Date(x.date);
        return x;
      });
      const play = () => {
        const chart = barChartRace(data, {
          svgId'bar-chart-race'
          });
          d3.select('#bar-chart-race').remove();
          d3.select('body').append(() => chart);
          chart.play();
      }

      const button = d3.select('body').append('div').append('button')
        .attr('type''button').attr('class','reiniciar').text('Reiniciar');

      // iniciar animación al cargar la página
      play();

      // reiniciar al dar click en el botón
      button.on('click', () => {
        play();
      });
    
    </script>
  </body>
</html>

El segundo archivo HTML necesario es el que tomaremos del repositorio  de Takanori Fujiwara Archivo chart.js
lo creamos de la misma manera dando clic en el signo +, elejimos la opción HTML y le colocamos el nombre chartjs, tomar en cuenta que no se debe colocar .html ya que apps script lo coloca automaticamente.


En esta parte borramos su contenido y creamos un tipo de atributo script de HTML <script></script> y dentro de este script pegamos el código del archivo chart.js del repositorio de Takanori Fujiwara.

Luego de pegar el código nos dirigimos a la fila donde se define la constante barChartRace y eliminamos la palabra export debido a que Apps Script no soporta los módulos de la especificación ES6 de JavaScript.


También puedes modificar de manera opcional la variable n y width, las cuales nos muestran las cantidades de barras horizontales y el ancho de nuestra gráfica, en mi ejemplo lo dejé en n=10 (diez barras horizontales) y width=1000.


Finalmente damos clic en guardar proyecto




Generar gráfica interactiva Bar Chart Race en mi hoja 

de cálculo de Google Sheets

Finalmente refrescamos nuestra hoja de cálculo y debería aparecer nuestro menú para generar el gráfico animado.

La primera vez que usamos nos pedirá autorización para ejecutar código de apps script, lo permitimos y volvemos a usar el menú, finalmente observamos el resultado.










viernes, 17 de marzo de 2023

Resaltar filas y columnas con uso de Visual Basic en Excel

 

RESALTAR FILAS Y COLUMNAS DE MI HOJA ACTIVA EN EXCEL

 

Para resaltar hojas filas y columnas en referencia a la celda que elijo dentro de mi hoja de Excel, podemos realizarlo mediante la interfaz de Programación de Visual Basic para Aplicaciones con Microsoft Excel.

Habilitar pestaña de Programador en Excel

 

Para habilitar la pestaña Programador realizamos lo siguiente:

·         Seleccionamos Opciones dentro de Archivo

 

·         Luego habilitamos con un  visto la herramienta Programador

 





Teniendo habilitado Programador

 


 

·         Elegimos Visual Basic y podemos codificar nuestras hojas de Excel individuales o a su vez un código general que abarque nuestro libro de trabajo de Excel, solo con guardar luego de escribir el código se ejecuta automáticamente en nuestro libro de trabajo.

 





Código para resaltar filas y columnas enteras de Excel

 

El siguiente es el código para resaltar filas y columnas enteras:

 

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

    If Target.Cells.Count > 1 Then Exit Sub

    Application.ScreenUpdating = False

    ' Clear the color of all the cells

    Cells.Interior.ColorIndex = 0

    With Target

        ' Highlight the entire row and column that contain the active cell

        .EntireRow.Interior.ColorIndex = 8

        .EntireColumn.Interior.ColorIndex = 8

    End With

    Application.ScreenUpdating = True

End Sub

Fuente: https://learn.microsoft.com/en-us/office/vba/excel/concepts/cells-and-ranges/highlight-the-active-cell-row-or-column

Video de como realizar el resaltado de filas y columnas enteras en Excel

 

 

jueves, 16 de marzo de 2023

Resaltar filas y columnas activas en google sheets

 Resaltar filas y columnas activas en google sheets con AppsScript


Introducción

AppsScript nos permite interactuar con nuestras hojas de cálculo de google para realizar cualquier acción sobre ellas, como dar formato, cálculos automáticos, consultas, etc.




Función AppScript para resaltar filas y columnas activas en google sheets

function myFunction() {

  // creación de variables
  var range = SpreadsheetApp.getActiveRange(); // obtengo el rango activo de mi hoja de cálculo}
  var sheet = range.getSheet();                // obtengo a hoja activa que estoy utilizando
  var filas = SpreadsheetApp.getActiveRange().getSheet().getMaxRows(); // establezco la variable filas, la cual seleccione a todas las filas de mi rango activo en mi hoja de cálculo
  var columnas = SpreadsheetApp.getActiveRange().getSheet().getMaxColumns(); // establezco la variable columnas, la cual seleccione a todas las columnas de mi rango activo en mi hoja de cálculo


  // acciones para resaltado de filas y columnas
  sheet.getRange(1,1,filas,columnas).setBackground(null); // Seteo o borro el formato de mi hoja activa
  sheet.getRange(1,range.getColumn(),filas,range.getNumColumns()).setBackground("yellow"); // establezco la columna activa en color "yellow"
  sheet.getRange(range.getRow(),1,range.getNumRows(),columnas).setBackground("yellow"); // establezco la fila activa en color "yellow"
}




lunes, 27 de febrero de 2023

Beneficios y características de formato tabla - Microsoft Excel

 FORMATO TABLA DE EXCEL

Introducción

El uso de formato tabla que nos ofrece Microsoft Excel, nos permite interactuar de una manera mas productiva con nuestro datos, como por ejemplo: seleecionar filas, columnas y tabla entera con un solo clic, ingresar filas y columnas de manera automática, sobrellenar formulas con solo escribirla en la primera fila, etc.

Características y/o Beneficios

Los beneficios y características son muchos y bastante productivos, entre los cuales te puedo resumir los siguientes:

Formato y estilos visuales

Al estar dentro de nuestro rango de datos que queremos darle el formato tabla, nos dirigimos a la ventana de Inicio y buscamos "Dar formato como tabla", luego seleccionamos el estilo que mas nos guste.



Agregar filas y columnas automáticamente

Al estar en la última celda de nuestra tabla podemos ingresar una fila con la tecla TAB, también podemos hacer clic derecho, luego en Insertar podemos elegir Filas de la tabla arriba o abajo.

Para agregar columnas hacemos clic o nos dirigimos en la siguiente columna que queremos ingresar un encabezado o campo, y damos el  nombre a nuestro en cabezado nuevo y presionamos ENTER, también podemos ingresar una formaular o acción lo cual se reflejará o nos permitirá sobrellenar en las siguiente celdas de nuestra columna nueva ingresada.

Selección de filas, columnas y tabla entera

Con solo dirigirnos de manera ligera a nuestra prima fila yó columnas podemos seleccionar toda su fila y/ó columna de manera rápida y eficaz, y aprovecha su uso para dar formato a ciertos datos que querramos, como ejemplo: seleccionamos ciertas columnas que no tengan formato dolar para dárselo.



Movimiento inteligente de columnas de datos

Si queremos modificar la ubicación de columnas podemos realizar de manera fácil y rápida, primero debemos tener una espacion nuevo de columna, luego seleecionar la columna que queremos, manteniendo presionado la arrastramos a nuestro nuevo destino y cambiamos los nombres de los encabezados también.




Interactuar con otra tabla

Podemos tomar referencias o datos de mas tablas para poder realizar consultar y extraer datos dentro de nuestra tabla y fuera de ella, lo cual es bastante productivo, en el ejemplo que observan, buscarco la categoria de cada producto en la TablaCategoria que esta en otra hoja de cálculo.



Fila de totales

Estando dentro de nuestra tabla (cualquier celda) nos dirigimos a Diseño Tabla, dentro de opciones de estilo de tabla seleccionamos ó habilitamos Fila de total





Filtros inteligentes - fila de totales enlazados a esos filtros

Si seleccionamos o filtramos ciertos productos o celdas, nuestro resultado de total siempre nos vá a mostrar el valor respecto a esos filtros.




Segmentación de datos

Podemos ingresar la característica de Segmentar datos- Slicers para poder filtrar de manera interactiva nuestro datos.


Video en Youtube




Conclusiones

El uso de formato tabla hace que nuestro trabajo sobre datos se haga mas facil de usar e interpretar.


jueves, 21 de julio de 2022

Utilidad de Google Drive

Google Drive

Introducción

Google drive es un servicio online que nos ofrece Google, por el cual podemos almacenar, crear, editar, compartir y analizar gran cantidad de información de nuestro archivos desde cualquier dispositivo que tenga accesos a internet, e inlcuso podemos habilitar cualquier documento para trabajarlo sin conexión a internet una vez ya creado dicho archivo.

Utilidades de google drive

Espacio de almancenamiento

La cantidad de espacio gratuito que te brinda google es de 15Gb, pero si requiere mas espacio puedes contratar con google el espacio que necesites.

Compartición y sincronización

Podemos compartir y recibir documentos con personas que usen google drive, además podemos sincronizar google drive con nuestro computador.
https://support.google.com/drive/answer/10838124?visit_id=637940318846873736-2680565215&p=backup_and_sync_signin&rd=2

Aplicaciones ofimática de google

Documentos de Google

Herramienta útil para crear, editar, compartir archivos en línea

Hojas de cálculo de Google

Excelente herramienta para ingresar, manipular, almacenar y analizar datos

Presentaciones de Google

Es una herramienta por medio de la cual podemos realizar nuestras presentaciones de investigaciones, tareas, informes, etc.


Formulario de Google

Herramienta de utilidad para crear formulario como encuestas, consultas y preguntas.

Conclusiones

Google drive es hoy en día una herramienta que en lo personal la utilizo todos los dias tanto en mi vida personal como en mi trabajo, me ha permitido organizar mis tareas, archivos de una manera eficaz y acceder a ella en cualquier momento desde un dispositivo conectado a internet.








jueves, 7 de julio de 2022

Ubicación de Router WIFI

Ubicación de Router Wifi en Hogar u Oficina

A continuación ideas de la ubicación del router en tu hogar u oficina.

  • Ubicar el router en un lugar céntrico del departamento u oficina para que pueda abarcar la mayoria del área, tomar en cuenta que la radiación del wifi se reduce a medida que aumenta su radio de cobertura y a lo que atraviesa paredes o estructuras solidas.
  • Los lugares donde no hay buena señala wifi o comunmente nombrados como puntos muertos, se debe solucionar con un router repetidor o puntos de acceso cerca de ese punto muerto y asi cubrir las necesidades de señal wifi.
  • En la figura mostrada a continuación se observa el circulo centrico pequeño donde se proyecta la ubicación del router WIFI con el fin de que cubra la mayor area posible, probablemte el dormitorio superior derecho sea un punto muerto, en el cual se debe proyectar un router repetidor y asi cubrir eficazmente el departamento.



viernes, 29 de abril de 2022

Tips para una ciudad inteligente - Smart City

TIPS SMART CITY

Smart City comúnmente llamada ciudad inteligente se refiere al desarrollo urbanístico de un ciudad con el fin de dotar las necesidades básicas y generales para sus habitantes, mantenimiento el ámbito ecológico sostenible.

Comparación mediante imagenes 

                    Proyección/Vista de Ciudad Inteligente vs Ciudad sin visión

        Ciudad Inteligente 

Como observamos a las imágenes anteriores, se observa una gran diferencia entre ellas, la ciudad representada de la imagen izquierda tiene una visión sostenible de su sector urbano, mientras que la ciudad de la imagen derecha nos refleja un desinterés total para su desarrollo.

Tips para conseguir un proyecto de Ciudad Inteligente

  • Desarrollo de planificación urbana.
  • Diseño y planificación entre todas las entidades público y privadas.
  • Infraestructura de calidad y eficiente de agua potable, electricidad, telecomunicaciones, gas, transportes, servicios de urgencia y seguridad, equipamientos públicos, edificaciones inteligentes de oficinas y de residencias, etc.
  • Respetar aspectos ambientales - sostenibilidad.
  • Ejecución estratégica del proyecto.
  • Instrucción permanente en visión de ciudades digitales.