{"id":18456254,"url":"https://github.com/funpythonec/visualizaciondatos","last_synced_at":"2026-01-24T10:02:32.802Z","repository":{"id":114260891,"uuid":"198089344","full_name":"FunPythonEC/VisualizacionDatos","owner":"FunPythonEC","description":"Recopilación de codigos para realizar graficos cn python, usando las libreiras más recomendadas para la visualización de datos","archived":false,"fork":false,"pushed_at":"2019-07-21T19:24:18.000Z","size":223,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-22T21:52:30.589Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FunPythonEC.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-07-21T18:07:26.000Z","updated_at":"2019-07-21T19:24:20.000Z","dependencies_parsed_at":null,"dependency_job_id":"69c63df2-b570-43ec-a45f-a731ddbcbc17","html_url":"https://github.com/FunPythonEC/VisualizacionDatos","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/FunPythonEC/VisualizacionDatos","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunPythonEC%2FVisualizacionDatos","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunPythonEC%2FVisualizacionDatos/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunPythonEC%2FVisualizacionDatos/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunPythonEC%2FVisualizacionDatos/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FunPythonEC","download_url":"https://codeload.github.com/FunPythonEC/VisualizacionDatos/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FunPythonEC%2FVisualizacionDatos/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28724374,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T08:27:05.734Z","status":"ssl_error","status_checked_at":"2026-01-24T08:27:01.197Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T08:10:59.445Z","updated_at":"2026-01-24T10:02:32.783Z","avatar_url":"https://github.com/FunPythonEC.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# VisualizacionDatos\nRecopilación de codigos para realizar graficos cn python, usando las libreiras más recomendadas para la visualización de datos\n## Herramientas para la visualización de datos\nLa visualización de datos es una gran parte de los trabajos de un cientifico de datos.\nCrear visualozaciones realmente ayuda a que las cosas sean más claras y fáciñes de entender, especialemnte con conjunto de datos más grande y de alta dimensión.\nPresentar sus resultados de una menra clara, concisa y convincente.\nAudiencia a menudo clientes no técnicos pueda entender.\n\nMatplotlib es una popular biblioteca de python que se puede usar para crear visualizaciones de datos con bastante fácillidad.\n\n### Grafico de dispersión.-\nLos diagramas de dispersión son excelentes para mostrar la relación entre variables. \n\n\n```python\nimport matplotlib.pyplot as plt\nimport numpy as np\n\ndef scatterplot(x_data, y_data, x_label=\"\", y_label=\"\", title=\"\", color = \"r\", yscale_log=False):\n\n    # Create the plot object\n    _, ax = plt.subplots()\n\n    # Plot the data, set the size (s), color and transparency (alpha)\n    # of the points\n    ax.scatter(x_data, y_data, s = 10, color = color, alpha = 0.75)\n\n    if yscale_log == True:\n        ax.set_yscale('log')\n\n    # Label the axes and provide a title\n    ax.set_title(title)\n    ax.set_xlabel(x_label)\n    ax.set_ylabel(y_label)\n    \n```\n\n### Line Plots\n\n\n```python\ndef lineplot(x_data, y_data, x_label=\"\", y_label=\"\", title=\"\"):\n    # Create the plot object\n    _, ax = plt.subplots()\n\n    # Plot the best fit line, set the linewidth (lw), color and\n    # transparency (alpha) of the line\n    ax.plot(x_data, y_data, lw = 2, color = '#539caf', alpha = 1)\n\n    # Label the axes and provide a title\n    ax.set_title(title)\n    ax.set_xlabel(x_label)\n    ax.set_ylabel(y_label)\n```\n\n### Histograms\n\n\n```python\ndef histogram(data, n_bins, cumulative=False, x_label = \"\", y_label = \"\", title = \"\"):\n    _, ax = plt.subplots()\n    ax.hist(data, n_bins = n_bins, cumulative = cumulative, color = '#539caf')\n    ax.set_ylabel(y_label)\n    ax.set_xlabel(x_label)\n    ax.set_title(title)\n```\n\n\n```python\n# Overlay 2 histograms to compare them\ndef overlaid_histogram(data1, data2, n_bins = 0, data1_name=\"\", data1_color=\"#539caf\", data2_name=\"\", data2_color=\"#7663b0\", x_label=\"\", y_label=\"\", title=\"\"):\n    # Set the bounds for the bins so that the two distributions are fairly compared\n    max_nbins = 10\n    data_range = [min(min(data1), min(data2)), max(max(data1), max(data2))]\n    binwidth = (data_range[1] - data_range[0]) / max_nbins\n\n\n    if n_bins == 0:\n    \tbins = np.arange(data_range[0], data_range[1] + binwidth, binwidth)\n    else: \n    \tbins = n_bins\n\n    # Create the plot\n    _, ax = plt.subplots()\n    ax.hist(data1, bins = bins, color = data1_color, alpha = 1, label = data1_name)\n    ax.hist(data2, bins = bins, color = data2_color, alpha = 0.75, label = data2_name)\n    ax.set_ylabel(y_label)\n    ax.set_xlabel(x_label)\n    ax.set_title(title)\n    ax.legend(loc = 'best')\n```\n\n### Bar Plots\n\n\n```python\ndef barplot(x_data, y_data, error_data, x_label=\"\", y_label=\"\", title=\"\"):\n    _, ax = plt.subplots()\n    # Draw bars, position them in the center of the tick mark on the x-axis\n    ax.bar(x_data, y_data, color = '#539caf', align = 'center')\n    # Draw error bars to show standard deviation, set ls to 'none'\n    # to remove line between points\n    ax.errorbar(x_data, y_data, yerr = error_data, color = '#297083', ls = 'none', lw = 2, capthick = 2)\n    ax.set_ylabel(y_label)\n    ax.set_xlabel(x_label)\n    ax.set_title(title)\n\n\n\ndef stackedbarplot(x_data, y_data_list, colors, y_data_names=\"\", x_label=\"\", y_label=\"\", title=\"\"):\n    _, ax = plt.subplots()\n    # Draw bars, one category at a time\n    for i in range(0, len(y_data_list)):\n        if i == 0:\n            ax.bar(x_data, y_data_list[i], color = colors[i], align = 'center', label = y_data_names[i])\n        else:\n            # For each category after the first, the bottom of the\n            # bar will be the top of the last category\n            ax.bar(x_data, y_data_list[i], color = colors[i], bottom = y_data_list[i - 1], align = 'center', label = y_data_names[i])\n    ax.set_ylabel(y_label)\n    ax.set_xlabel(x_label)\n    ax.set_title(title)\n    ax.legend(loc = 'upper right')\n\n\n\ndef groupedbarplot(x_data, y_data_list, colors, y_data_names=\"\", x_label=\"\", y_label=\"\", title=\"\"):\n    _, ax = plt.subplots()\n    # Total width for all bars at one x location\n    total_width = 0.8\n    # Width of each individual bar\n    ind_width = total_width / len(y_data_list)\n    # This centers each cluster of bars about the x tick mark\n    alteration = np.arange(-(total_width/2), total_width/2, ind_width)\n\n    # Draw bars, one category at a time\n    for i in range(0, len(y_data_list)):\n        # Move the bar to the right on the x-axis so it doesn't\n        # overlap with previously drawn ones\n        ax.bar(x_data + alteration[i], y_data_list[i], color = colors[i], label = y_data_names[i], width = ind_width)\n    ax.set_ylabel(y_label)\n    ax.set_xlabel(x_label)\n    ax.set_title(title)\n    ax.legend(loc = 'upper right')\n```\n\n### Box Plots\n\n\n```python\ndef boxplot(x_data, y_data, base_color=\"#539caf\", median_color=\"#297083\", x_label=\"\", y_label=\"\", title=\"\"):\n    _, ax = plt.subplots()\n\n    # Draw boxplots, specifying desired style\n    ax.boxplot(y_data\n               # patch_artist must be True to control box fill\n               , patch_artist = True\n               # Properties of median line\n               , medianprops = {'color': median_color}\n               # Properties of box\n               , boxprops = {'color': base_color, 'facecolor': base_color}\n               # Properties of whiskers\n               , whiskerprops = {'color': base_color}\n               # Properties of whisker caps\n               , capprops = {'color': base_color})\n\n    # By default, the tick label starts at 1 and increments by 1 for\n    # each box drawn. This sets the labels to the ones we want\n    ax.set_xticklabels(x_data)\n    ax.set_ylabel(y_label)\n    ax.set_xlabel(x_label)\n    ax.set_title(title)\n```\n\nhttps://towardsdatascience.com/5-quick-and-easy-data-visualizations-in-python-with-code-a2284bae952f\n\n### LIBRERIA SEARBON \n\nPara utilizar la librería Seaborn en primer lugar se han de cargar un conjunto de datos. Para ello se puede utilizar el conjunto de datos de propinas que se encuentra en la propia librería. Para ello se ha de importar el método load_dataset y cargar el conjunto de datos 'tips'. \n\n\n```python\n    from seaborn import load_dataset\n    tips.head()\n```\n\n\n\n\n\u003cdiv\u003e\n\u003cstyle scoped\u003e\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n\u003c/style\u003e\n\u003ctable border=\"1\" class=\"dataframe\"\u003e\n  \u003cthead\u003e\n    \u003ctr style=\"text-align: right;\"\u003e\n      \u003cth\u003e\u003c/th\u003e\n      \u003cth\u003etotal_bill\u003c/th\u003e\n      \u003cth\u003etip\u003c/th\u003e\n      \u003cth\u003esex\u003c/th\u003e\n      \u003cth\u003esmoker\u003c/th\u003e\n      \u003cth\u003eday\u003c/th\u003e\n      \u003cth\u003etime\u003c/th\u003e\n      \u003cth\u003esize\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003cth\u003e0\u003c/th\u003e\n      \u003ctd\u003e16.99\u003c/td\u003e\n      \u003ctd\u003e1.01\u003c/td\u003e\n      \u003ctd\u003eFemale\u003c/td\u003e\n      \u003ctd\u003eNo\u003c/td\u003e\n      \u003ctd\u003eSun\u003c/td\u003e\n      \u003ctd\u003eDinner\u003c/td\u003e\n      \u003ctd\u003e2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e1\u003c/th\u003e\n      \u003ctd\u003e10.34\u003c/td\u003e\n      \u003ctd\u003e1.66\u003c/td\u003e\n      \u003ctd\u003eMale\u003c/td\u003e\n      \u003ctd\u003eNo\u003c/td\u003e\n      \u003ctd\u003eSun\u003c/td\u003e\n      \u003ctd\u003eDinner\u003c/td\u003e\n      \u003ctd\u003e3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e2\u003c/th\u003e\n      \u003ctd\u003e21.01\u003c/td\u003e\n      \u003ctd\u003e3.50\u003c/td\u003e\n      \u003ctd\u003eMale\u003c/td\u003e\n      \u003ctd\u003eNo\u003c/td\u003e\n      \u003ctd\u003eSun\u003c/td\u003e\n      \u003ctd\u003eDinner\u003c/td\u003e\n      \u003ctd\u003e3\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e3\u003c/th\u003e\n      \u003ctd\u003e23.68\u003c/td\u003e\n      \u003ctd\u003e3.31\u003c/td\u003e\n      \u003ctd\u003eMale\u003c/td\u003e\n      \u003ctd\u003eNo\u003c/td\u003e\n      \u003ctd\u003eSun\u003c/td\u003e\n      \u003ctd\u003eDinner\u003c/td\u003e\n      \u003ctd\u003e2\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003cth\u003e4\u003c/th\u003e\n      \u003ctd\u003e24.59\u003c/td\u003e\n      \u003ctd\u003e3.61\u003c/td\u003e\n      \u003ctd\u003eFemale\u003c/td\u003e\n      \u003ctd\u003eNo\u003c/td\u003e\n      \u003ctd\u003eSun\u003c/td\u003e\n      \u003ctd\u003eDinner\u003c/td\u003e\n      \u003ctd\u003e4\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n\n\n### Grafico de dispersión con Seabon\n\nUno de los primeros gráficos que se pueden realizar con estos datos es un gráfico de dispersión. Mediante el cual se puede ver la relación entre dos variables como puede ser la factura y la propina.\n\nEste tipo de gráfico se puede obtener mediante el método lmplot al que se le ha de indicar la característica para el cada uno de los ejes y el conjunto de datos.Como se muestra en el siguiente ejemplo:\n\n\n```python\n    from seaborn import lmplot\n    lmplot('total_bill', 'tip', data=tips, fit_reg=False)\n```\n\n\n\n\n    \u003cseaborn.axisgrid.FacetGrid at 0x7f0ee0d3db70\u003e\n\n\n\n\n![png](output_20_1.png)\n\n\nEn el ejemplo se puede ver una opción fit_reg a la que se ha asignado el valor falso, esto es necesario dado que por defecto realiza la regresión lineal. \n\n\n```python\n    lmplot('total_bill', 'tip', data=tips)\n```\n\n\n\n\n    \u003cseaborn.axisgrid.FacetGrid at 0x7f0ede4444e0\u003e\n\n\n\n\n![png](output_22_1.png)\n\n\nLa gráfica así obtenida incluye además de los datos incluye la regresión lineal y el intervalo de confianza. El intervalo de confianza se puede fijar con la propiedad ci, pudiendo indicar el intervalo deseado o None para que se omita. \n\n\n```python\n    lmplot('total_bill', 'tip', data=tips, ci=None)\n```\n\n\n\n\n    \u003cseaborn.axisgrid.FacetGrid at 0x7f0ede4006d8\u003e\n\n\n\n\n![png](output_24_1.png)\n\n\nUna característica interesante se lmplot es la posibilidad de representar más de una regresión a la vez. Para ello solamente se le ha de utilizar la propiedad hue a la que le ha de indicar el nombre de la columna de dataframe que se desea utilizar para separar\n\n\n```python\nlmplot(x=\"total_bill\", y=\"tip\", hue=\"smoker\", data=tips)\n```\n\n\n\n\n    \u003cseaborn.axisgrid.FacetGrid at 0x7f0ede38ec18\u003e\n\n\n\n\n![png](output_26_1.png)\n\n\n### Diagrama de densidad\n\nLos diagramas de densidad se pueden utilizar para ver cómo se comporta distribuciones de datos. \nSeaborn este tipo de diamgramas se puede obtener con el método kdeplot. \n\n\n```python\nfrom seaborn import kdeplot\nkdeplot(tips.total_bill)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc283208\u003e\n\n\n\n\n![png](output_29_1.png)\n\n\n\n```python\nkdeplot(tips.tip, tips.total_bill)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc1430f0\u003e\n\n\n\n\n![png](output_30_1.png)\n\n\n\n```python\nfrom seaborn import distplot\ndistplot(tips.total_bill)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc1476a0\u003e\n\n\n\n\n![png](output_31_1.png)\n\n\nSi no se desea que el histograma incluya también el diagrama de densidad se ha de indicar asignando el valor falso a la opción kde\n\n\n```python\ndistplot(tips.total_bill, kde=False)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc0b44e0\u003e\n\n\n\n\n![png](output_33_1.png)\n\n\nPuedes eliminar es el histograma configurando la opción hist a falso\n\n\n```python\n    distplot(tips.total_bill, hist=False)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc0d9ba8\u003e\n\n\n\n\n![png](output_35_1.png)\n\n\ndistplot permite agregar también un gráfico de alfombra, para lo que se ha inyectar el valor true a la propiedad rug\n\n\n```python\ndistplot(tips.total_bill, rug=True, hist=False)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc053710\u003e\n\n\n\n\n![png](output_37_1.png)\n\n\nFinalmente se puede hacer el gráfico vertical, para lo que se ha de propiedad vertical ha de ser verdadera.\n\n\n```python\ndistplot(tips.total_bill, vertical=True)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edc01a5f8\u003e\n\n\n\n\n![png](output_39_1.png)\n\n\n### Boxplot\n\nLa dispersión de datos se puede comprobar también mediante los gráficos de tipo boxplot. Lo que se pueden obtener mediante el método boxplot\n\n\n```python\nfrom seaborn import boxplot\nboxplot(tips.total_bill)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edbf736d8\u003e\n\n\n\n\n![png](output_42_1.png)\n\n\nPara que la representación sea vertical simplemente se ha mediante la propiedad orient.\n\n\n```python\nboxplot(tips.total_bill, orient=\"v\")\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edbf28320\u003e\n\n\n\n\n![png](output_44_1.png)\n\n\nRepresentar más de una gráfico tipo boxplot permite comparar la dispersión de los datos al poder ver los resultados de forma conjunta.\n\n\n```python\nboxplot(x=\"sex\", y=\"total_bill\", data=tips)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edbf5d240\u003e\n\n\n\n\n![png](output_46_1.png)\n\n\nDe forma análoga a los gráficos de dispersión en serabon también se puede dividir las gráficas boxplot en base una tercera columna.Es posible poder analizar el comportamiento de más de un conjunto de datos con la propiedad hue.\n\n\n```python\nboxplot(x=\"sex\", y=\"total_bill\", hue=\"smoker\", data=tips)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edbea75f8\u003e\n\n\n\n\n![png](output_48_1.png)\n\n\n### Violin\n\nserabon también incluye los gráficos de tipo violín como alternativa a los boxplot. Esto se utilizan se generan con el método violinplot \n\n\n```python\nfrom seaborn import violinplot\nviolinplot(x=\"sex\", y=\"total_bill\", hue=\"smoker\", data=tips)\n```\n\n\n\n\n    \u003cmatplotlib.axes._subplots.AxesSubplot at 0x7f0edbe82080\u003e\n\n\n\n\n![png](output_51_1.png)\n\n\nhttps://www.analyticslane.com/2018/07/20/visualizacion-de-datos-con-seaborn/\n\n### Multiple plot\n\n\n```python\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nsns.set(style=\"ticks\")\ntips = sns.load_dataset(\"tips\")\ng = sns.FacetGrid(tips, col=\"time\")\n\n```\n\n\n![png](output_54_0.png)\n\n\n\n```python\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nsns.set(style=\"ticks\")\ntips = sns.load_dataset(\"tips\")\ng = sns.FacetGrid(tips, col=\"time\")\ng.map(plt.hist, \"tip\");\n```\n\n\n![png](output_55_0.png)\n\n\n\n```python\n\n```\nhttps://coderhook.github.io/learning%20seaborn\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunpythonec%2Fvisualizaciondatos","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffunpythonec%2Fvisualizaciondatos","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffunpythonec%2Fvisualizaciondatos/lists"}