{"id":73,"date":"2025-06-13T10:07:00","date_gmt":"2025-06-13T10:07:00","guid":{"rendered":"https:\/\/vicfolio.com\/blog\/?p=73"},"modified":"2025-06-11T16:09:10","modified_gmt":"2025-06-11T16:09:10","slug":"visualizacion-de-datos-profesional-con-python-matplotlib-seaborn-y-plotly","status":"publish","type":"post","link":"https:\/\/vicfolio.com\/blog\/?p=73","title":{"rendered":"Visualizaci\u00f3n de Datos Profesional con Python: Matplotlib, Seaborn y Plotly"},"content":{"rendered":"\n<p>La visualizaci\u00f3n de datos es esencial para comunicar hallazgos de manera efectiva. En este tutorial, exploraremos las principales bibliotecas de Python para crear gr\u00e1ficos impactantes:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Matplotlib<\/strong>: Para visualizaciones b\u00e1sicas y personalizables.<\/li>\n\n\n\n<li><strong>Seaborn<\/strong>: Para an\u00e1lisis estad\u00edstico visual.<\/li>\n\n\n\n<li><strong>Plotly<\/strong>: Para gr\u00e1ficos interactivos y dashboards.<\/li>\n<\/ul>\n\n\n\n<p>Usaremos un <strong>dataset real de ventas<\/strong> de una tienda online con registros diarios durante 30 d\u00edas.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>1. Gr\u00e1ficos B\u00e1sicos con Matplotlib<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Instalaci\u00f3n<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install matplotlib pandas<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplos Pr\u00e1cticos<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Gr\u00e1fico de L\u00edneas (Tendencia de Ventas)<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>import matplotlib.pyplot as plt\nimport pandas as pd\n\ndf = pd.read_csv('ventas.csv')\n\nplt.plot(df&#91;'fecha'], df&#91;'ventas_totales'])\nplt.xlabel('Fecha')\nplt.ylabel('Ventas Totales')\nplt.title('Ventas Diarias')\nplt.grid(True)\nplt.show()<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Gr\u00e1fico de Barras (Ventas por Producto)<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>plt.bar(df&#91;'producto'], df&#91;'ventas_producto'])\nplt.xlabel('Producto')\nplt.ylabel('Ventas')\nplt.title('Ventas por Producto')\nplt.xticks(rotation=45)\nplt.show()<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Scatter Plot (Relaci\u00f3n Fecha vs Ventas)<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>plt.scatter(df&#91;'fecha'], df&#91;'ventas_totales'])\nplt.xlabel('Fecha')\nplt.ylabel('Ventas')\nplt.title('Distribuci\u00f3n de Ventas')\nplt.show()<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>2. Personalizaci\u00f3n Avanzada en Matplotlib<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Colores, Estilos y Anotaciones<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>plt.style.use('ggplot')  # Estilo predeterminado\n\nplt.plot(df&#91;'fecha'], df&#91;'ventas_totales'], color='purple', linestyle='--', marker='o')\nplt.xlabel('Fecha', fontsize=12)\nplt.ylabel('Ventas', fontsize=12)\nplt.title('Ventas con Estilo Personalizado', fontweight='bold')\n\n# A\u00f1adir anotaciones\nmax_venta = df&#91;'ventas_totales'].max()\nfecha_max = df.loc&#91;df&#91;'ventas_totales'] == max_venta, 'fecha'].values&#91;0]\nplt.annotate(f'M\u00e1ximo: {max_venta}', xy=(fecha_max, max_venta), xytext=(10, 10), \n             textcoords='offset points', arrowprops=dict(arrowstyle='-&gt;'))\n\nplt.show()<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>3. Visualizaci\u00f3n Estad\u00edstica con Seaborn<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Instalaci\u00f3n<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install seaborn<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Ejemplos Clave<\/strong><\/h3>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Histograma y KDE (Distribuci\u00f3n de Ventas)<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>import seaborn as sns\n\nsns.histplot(df&#91;'ventas_totales'], kde=True, color='skyblue')\nplt.xlabel('Ventas Totales')\nplt.ylabel('Frecuencia')\nplt.title('Distribuci\u00f3n de Ventas')\nplt.show()<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Heatmap de Correlaci\u00f3n<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>corr = df.corr()\nsns.heatmap(corr, annot=True, cmap='coolwarm', fmt=\".2f\")\nplt.title('Matriz de Correlaci\u00f3n')\nplt.show()<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Boxplot (Distribuci\u00f3n por Categor\u00eda)<\/strong><\/h4>\n\n\n\n<pre class=\"wp-block-code\"><code>sns.boxplot(x='categoria', y='ventas_producto', data=df)\nplt.title('Distribuci\u00f3n de Ventas por Categor\u00eda')\nplt.xticks(rotation=45)\nplt.show()<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>4. Gr\u00e1ficos Interactivos con Plotly<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Instalaci\u00f3n<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install plotly dash<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Gr\u00e1fico Interactivo de Series Temporales<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>import plotly.express as px\n\nfig = px.line(df, x='fecha', y='ventas_totales', title='Ventas Diarias Interactivas')\nfig.update_xaxes(title_text='Fecha')\nfig.update_yaxes(title_text='Ventas Totales')\nfig.show()<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Dashboard B\u00e1sico con Dash<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from dash import Dash, dcc, html\n\napp = Dash(__name__)\n\napp.layout = html.Div(&#91;\n    html.H1(\"Dashboard de Ventas\"),\n    dcc.Graph(figure=fig)\n])\n\nif __name__ == '__main__':\n    app.run_server(debug=True)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>5. Subplots y Layouts Avanzados<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Varios Gr\u00e1ficos en una Figura<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))\n\n# Gr\u00e1fico 1: Barras\nax1.bar(df&#91;'producto'], df&#91;'ventas_producto'], color='orange')\nax1.set_title('Ventas por Producto')\nax1.tick_params(axis='x', rotation=45)\n\n# Gr\u00e1fico 2: L\u00edneas\nax2.plot(df&#91;'fecha'], df&#91;'ventas_totales'], color='green')\nax2.set_title('Tendencia de Ventas')\n\nplt.tight_layout()\nplt.show()<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>6. Principios de Dise\u00f1o en Visualizaci\u00f3n de Datos<\/strong><\/h2>\n\n\n\n<p>&#x2705; <strong>Teor\u00eda del Color<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Usa paletas coherentes (ej: <code>viridis<\/code>, <code>plasma<\/code>).<\/li>\n\n\n\n<li>Evita colores muy saturados.<\/li>\n<\/ul>\n\n\n\n<p>&#x2705; <strong>Storytelling con Datos<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>T\u00edtulos claros y descriptivos.<\/li>\n\n\n\n<li>Anotaciones para resaltar insights.<\/li>\n<\/ul>\n\n\n\n<p>&#x2705; <strong>Accesibilidad<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Texto legible (tama\u00f1o y contraste).<\/li>\n\n\n\n<li>Alternativas para dalt\u00f3nicos.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>C\u00f3digo Final Entregable<\/strong><\/h2>\n\n\n\n<p>Puedes descargar un <strong>Jupyter Notebook completo<\/strong> con todos los ejemplos desde <a href=\"#\">este enlace<\/a>.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclusi\u00f3n<\/strong><\/h2>\n\n\n\n<p>Con <strong>Matplotlib<\/strong>, <strong>Seaborn<\/strong> y <strong>Plotly<\/strong>, puedes crear visualizaciones desde simples hasta interactivas. Recuerda:<\/p>\n\n\n\n<p>&#x1f539; <strong>S\u00e9 claro<\/strong> en lo que comunicas.<br>&#x1f539; <strong>Optimiza el dise\u00f1o<\/strong> para tu audiencia.<br>&#x1f539; <strong>Experimenta<\/strong> con diferentes gr\u00e1ficos.<\/p>\n\n\n\n<p>\u00a1Ahora es tu turno de crear visualizaciones impactantes! &#x1f680;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La visualizaci\u00f3n de datos es esencial para comunicar hallazgos de manera efectiva. En este tutorial, exploraremos las principales bibliotecas de Python para crear gr\u00e1ficos impactantes: Usaremos un dataset real de ventas de una tienda online con registros diarios durante 30 d\u00edas. 1. Gr\u00e1ficos B\u00e1sicos con Matplotlib Instalaci\u00f3n Ejemplos Pr\u00e1cticos Gr\u00e1fico de L\u00edneas (Tendencia de Ventas) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":74,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[20,5],"class_list":["post-73","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","tag-programacion","tag-python"],"_links":{"self":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=73"}],"version-history":[{"count":1,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/73\/revisions"}],"predecessor-version":[{"id":75,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/posts\/73\/revisions\/75"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=\/wp\/v2\/media\/74"}],"wp:attachment":[{"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vicfolio.com\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}