{"id":1479,"date":"2018-12-26T18:52:11","date_gmt":"2018-12-26T23:52:11","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1479"},"modified":"2019-01-19T06:05:39","modified_gmt":"2019-01-19T11:05:39","slug":"grafica-animada-datos-serial","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/edelros\/grafica-animada-datos-serial\/","title":{"rendered":"Grafica animada - Datos Serial"},"content":{"rendered":"<p>El ejemplo usa datos aleatorios para presentar una forma de realizar gr\u00e1ficos en vivo usando la librer\u00eda matplotlib.<\/p>\n<p><a href=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/envivo_GIFanimado.gif\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1480\" src=\"http:\/\/blog.espol.edu.ec\/edelros\/files\/2018\/12\/envivo_GIFanimado.gif\" alt=\"\" width=\"640\" height=\"480\" \/><\/a><\/p>\n<p>Los datos pueden ser obtenidos de alg\u00fan experimento que envia datos al computador por el puerto serial, ver ejemplos en la secci\u00f3n Arduino.\u00a0 Como los datos podr\u00edan aumentar en el tiempo, se selecciona un tama\u00f1o de ventada de datos a graficar.<\/p>\n<p>El tiempo entre tramas o actualizaciones del gr\u00e1fico se puede controlar con la variable \"retraso\" que est\u00e1 dada en milisegundos.<\/p>\n<p>Los valores usados en la gr\u00e1fica son xi,yi semejantes a lo usado en el curso de an\u00e1lisis Num\u00e9rico (MATG1013) .<\/p>\n<pre># Grafica \"en vivo\" para actualizar datos\r\n# recibidos por puerto serial\r\n# Plantilla para proyecto, datos de prueba aleatorios\r\n\r\nimport matplotlib.pyplot as plt\r\nimport matplotlib.animation as animation\r\nimport random as rnd\r\n\r\n# Datos a graficar\r\nxi = []\r\nyi = []\r\n\r\n# ventana de datos para gr\u00e1fico\r\ntamano = 20\r\n# tiempo entre tramas\r\nretraso = 1000\r\n\r\n# GRAFICA figura\r\nfigura = plt.figure()\r\ngrafica = figura.add_subplot(1, 1, 1)\r\n\r\n# Nueva Trama\r\ndef unatrama(i, xi, yi):\r\n\r\n    # Recibe un dato nuevo\r\n    undato = int(rnd.random()*20)+1\r\n\r\n    # actualiza cada linea\r\n    yi.append(undato)\r\n    xi.append(len(yi)) # numero del dato ejemplo\r\n\r\n    # ventana de datos\r\n    xi = xi[-tamano:]\r\n    yi = yi[-tamano:]\r\n\r\n    # limpia y grafica de nuevo\r\n    grafica.clear()\r\n    grafica.plot(xi, yi)\r\n\r\n    # Presenta valores en pantalla\r\n    print(yi)\r\n    \r\n    return()\r\n\r\n# Animaci\u00f3n\r\nani = animation.FuncAnimation(figura,\r\n                              unatrama,\r\n                              fargs=(xi, yi),\r\n                              interval=retraso)\r\n\r\nplt.show()\r\n<\/pre>\n<p>En la funci\u00f3n unatrama(), la variable i en la funci\u00f3n es el n\u00famero de trama. La variable i es un par\u00e1metro necesario para la funci\u00f3n que se incrementa autom\u00e1ticamente en uno cada vez que se llama a la funci\u00f3n unatrama(). Los dem\u00e1s par\u00e1metros se adaptan a los datos del problema.<\/p>\n<p>Se pueden a\u00f1adir otros elementos a la grafica, como t\u00edtulos, etiquetas, otras l\u00edneas, etc. Adicionalmente el procesamiento de los datos se puede incorporar y presentar en la pantalla de texto al final de la funci\u00f3n.<\/p>\n<p><em><strong>Referencia<\/strong><\/em>:<br \/>\n<a href=\"https:\/\/learn.sparkfun.com\/tutorials\/graph-sensor-data-with-python-and-matplotlib\/update-a-graph-in-real-time\">https:\/\/learn.sparkfun.com\/tutorials\/graph-sensor-data-with-python-and-matplotlib\/update-a-graph-in-real-time<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>El ejemplo usa datos aleatorios para presentar una forma de realizar gr\u00e1ficos en vivo usando la librer\u00eda matplotlib. Los datos pueden ser obtenidos de alg\u00fan experimento que envia datos al computador por el puerto serial, ver ejemplos en la secci\u00f3n Arduino.\u00a0 Como los datos podr\u00edan aumentar en el tiempo, se selecciona un tama\u00f1o de ventada &hellip; <a href=\"https:\/\/blog.espol.edu.ec\/edelros\/grafica-animada-datos-serial\/\" class=\"more-link\">Sigue leyendo <span class=\"screen-reader-text\">Grafica animada - Datos Serial<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20777],"tags":[],"class_list":["post-1479","post","type-post","status-publish","format-standard","hentry","category-python"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/comments?post=1479"}],"version-history":[{"count":3,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1479\/revisions"}],"predecessor-version":[{"id":1548,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1479\/revisions\/1548"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/media?parent=1479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/categories?post=1479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/tags?post=1479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}