Visualización de datos usando Plotnine y ggplot2 en Python

La visualización de datos es la técnica de presentar datos en forma de gráficos, tablas o diagramas. La visualización de datos facilita a los analistas de datos analizar las tendencias o patrones que pueden estar presentes en los datos, ya que resume la gran cantidad de datos en un formato simple y fácil de entender. 

En este artículo, discutiremos cómo visualizar datos usando plotnine en Python, que es una implementación estricta de la gramática de gráficos. Antes de comenzar, comprendamos un breve resumen sobre qué es la gramática de los gráficos.

¿Qué es la gramática de los gráficos?

Una gramática de gráficos es básicamente una herramienta que nos permite describir los componentes de un gráfico dado. Básicamente, esto nos permite ver más allá de los gráficos nombrados (diagrama de dispersión, por nombrar uno) y básicamente ver las estadísticas subyacentes detrás de él. Considere la gramática de gráficos como la gramática del inglés donde usamos diferentes palabras, tiempos, puntuaciones para formar una oración. 

Componentes de Gramática de gráficos

Por lo general, para construir o describir cualquier visualización con una o más dimensiones, podemos usar los componentes que se muestran en la imagen a continuación. 

Components of Grammar of graphics

Primero, veremos los tres componentes principales que se requieren para crear una gráfica, y sin estos componentes, plotnine no podría trazar la gráfica. Estos son- 

  • Los datos son el conjunto de datos que se utiliza para trazar la trama.
  • La estética (aes) es el mapeo entre las variables de datos y las variables utilizadas por la trama, como eje x, eje y, color, relleno, tamaño, etiquetas, alfa, forma, ancho de línea, tipo de línea.
  • Objetos geométricos (geomas) es el tipo de diagrama u objeto geométrico que queremos usar, como punto, línea, histograma, barra, diagrama de caja, etc.

Hay varios componentes opcionales que pueden hacer que la trama sea más significativa y presentable. Estos son –

  • Las facetas permiten dividir los datos en grupos y cada grupo se traza por separado.
  • Las transformaciones estadísticas calculan los datos antes de graficarlos.
  • Las coordenadas definen la posición del objeto en un plano 2D.
  • Los temas definen la presentación de los datos, como fuente, color, etc.

Instalación

El plotnine se basa en ggplot2 en el lenguaje de programación R que se utiliza para implementar la gramática de gráficos en Python. Para instalar plotnine, escriba el siguiente comando en la terminal.

pip install plotnine

python install plotninepython install plotnine

Trazado de datos usando Plotnine y ggplot en Python

Aquí usaremos los tres componentes principales, es decir, datos, estética y objetos geométricos para trazar nuestros datos. Repasemos cada componente en detalle.

Datos

Los datos son el conjunto de datos que se necesita trazar. Podemos especificar los datos usando el constructor ggplot y pasando el conjunto de datos a ese constructor.

Ejemplo: especificar un conjunto de datos para ggplot

Usaremos el conjunto de datos de Iris y lo leeremos usando Pandas.

Python3

import pandas as pd
from plotnine import ggplot
  
# reading dataset
df = pandas.read_csv("Iris.csv")
  
# passing the data to the ggplot 
# constructor
ggplot(df)

Producción:

Specifying dataset for the ggplot

Esto nos dará una salida en blanco ya que no hemos especificado los otros dos componentes principales.

Estética

Ahora definamos la variable que queremos usar para cada eje en la gráfica. La estética asigna variables de datos a atributos gráficos, como posición 2D y color.

Ejemplo: Definición de la estética de plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
ggplot(df) + aes(x="Species", y="SepalLengthCm")

Producción:

Defining aesthetics of the plotnine and ggplot in Python

En el ejemplo anterior, podemos ver que la especie se muestra en el eje x y la longitud del sépalo se muestra en el eje y. Pero todavía no hay ninguna figura en la trama. Esto se puede agregar usando objetos geométricos.

Objetos Geométricos

Después de definir los datos y la estética, debemos definir el tipo de trama que queremos para la visualización. Esto le dice a la trama cómo deben mostrarse los puntos de datos. Proporciona una variedad de objetos geométricos como diagramas de dispersión, gráficos de líneas, gráficos de barras, diagramas de caja, etc. Veamos una variedad de ellos y cómo usarlos.

Nota: Para ver la lista de todos los geoms, consulte la referencia API de geoms de plotnine.

Ejemplo 1: agregar objetos geométricos a plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_col
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
ggplot(df) + aes(x="Species", y="SepalLengthCm") + geom_col()

Producción:

Adding geometric objects to the plotnine and ggplot in Python

En el ejemplo anterior, hemos utilizado el geom geam_col() que es un gráfico de barras con la base en el eje x. Podemos cambiar esto a diferentes tipos de geoms que encontremos adecuados para nuestra parcela.

Ejemplo 2: trazado de histograma con plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_histogram
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
ggplot(df) + aes(x="SepalLengthCm") + geom_histogram()

Producción:

Plotting Histogram with plotnine and ggplot in Python

Ejemplo 3: Trazar un diagrama de dispersión con plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_point
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
ggplot(df) + aes(x="Species", y="SepalLengthCm") + geom_point()

Producción:

Plotting Scatter plot with plotnine and ggplot in Python

Ejemplo 4: diagrama de caja con plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_boxplot
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
# passing the data to the ggplot 
# constructor
ggplot(df) + aes(x="Species", y="SepalLengthCm") + geom_boxplot()

Producción:

Plotting Box plot with plotnine and ggplot in Python

Ejemplo 5: gráfico Plottin Line con plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_line
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
ggplot(df) + aes(x="Species", y="SepalLengthCm") + geom_line()

Producción:

Plottin Line chart with plotnine and ggplot in Python

Hasta ahora hemos aprendido cómo crear un gráfico básico usando el concepto de gramática de gráficos y sus tres componentes principales. Ahora, aprendamos cómo personalizar estos gráficos usando los otros componentes opcionales.

Mejorar las visualizaciones de datos usando plotnine y ggplot

 Aquí aprenderemos sobre los componentes opcionales restantes. Estos componentes son – 

  • facetas
  • Transformaciones estadísticas
  • Coordenadas
  • Temas 

facetas

Las facetas se utilizan para trazar subconjuntos de datos. permite un gráfico individual para grupos de datos en la misma imagen.

Por ejemplo, consideremos el conjunto de datos de propinas que contiene información sobre las personas que probablemente comieron en un restaurante y si dejaron o no una propina, su edad, sexo, etc. Echémosle un vistazo.

Nota: Para descargar el conjunto de datos utilizado, haga clic aquí .

tips dataset

Ahora supongamos que queremos graficar cuál fue la factura total según el género y en cada día. En tales casos, las facetas pueden ser muy útiles, veamos cómo.

Ejemplo: facetas con plotnine y ggplot en Python 

Python3

import pandas as pd
from plotnine import ggplot, aes, facet_grid, labs, geom_col
  
# reading dataset
df = pd.read_csv("tips.csv")
  
(
    ggplot(df)
    + facet_grid(facets="~sex")
    + aes(x="day", y="total_bill")
    + labs(
        x="day",
        y="total_bill",
    )
    + geom_col()
)

Producción:

Facets with plotnine and ggplot in Python

Transformaciones estadísticas

Las transformaciones estadísticas significan calcular datos antes de graficarlos. Se puede ver en el caso de un histograma. Ahora consideremos el ejemplo anterior, donde queríamos encontrar la medida de la columna de longitud del sépalo y ahora queremos distribuir esa medida en 15 columnas. La función geom_histogram() de plotnine calcula y traza estos datos automáticamente.

Ejemplo: Transformaciones estadísticas usando plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_histogram
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
ggplot(df) + aes(x="SepalLengthCm") + geom_histogram(bins=15)

Producción:

Statistical transformations using plotnine and ggplot in Python

Coordenadas

El sistema de coordenadas define la aplicación del punto de datos con la ubicación gráfica 2D en el gráfico. Veamos el ejemplo anterior de histograma, queremos trazar este histograma horizontalmente. Simplemente podemos hacer esto usando la función coord_flip().

Ejemplo: sistema de coordenadas en plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, geom_histogram, coord_flip
  
# reading dataset
df = pd.read_csv("Iris.csv")
  
(
    ggplot(df)
    + aes(x="SepalLengthCm")
    + geom_histogram(bins=15)
    + coord_flip()
)

Producción:

Coordinate system in plotnine and ggplot in Python

Temas

Los temas se utilizan para mejorar el aspecto de la visualización de datos. Plotnine incluye muchos temas que se pueden encontrar en la API de temas de plotnine . Usemos el ejemplo anterior con facetas e intentemos hacer que la visualización sea más interactiva.

Ejemplo: Temas en plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, facet_grid, labs, geom_col, theme_xkcd
  
# reading dataset
df = pd.read_csv("tips.csv")
  
(
    ggplot(df)
    + facet_grid(facets="~sex")
    + aes(x="day", y="total_bill")
    + labs(
        x="day",
        y="total_bill",
    )
    + geom_col()
    + theme_xkcd()
)

Producción:

Themes in plotnine and ggplot in Python

También podemos rellenar el color de acuerdo a añadir más información a este gráfico. Podemos agregar color a la variable de tiempo en el gráfico anterior usando el parámetro de relleno de la función aes.

Trazado de datos multidimensionales

Hasta ahora hemos visto cómo graficar más de 2 variables en el caso de las facetas. Ahora supongamos que queremos graficar datos usando cuatro variables, hacer esto con facetas puede ser un poco agitado, pero usando el color podemos graficar 4 variables en la misma gráfica solamente. Podemos rellenar el color usando el parámetro de relleno de la función aes().

Ejemplo: agregar color a plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, facet_grid, labs, geom_col, theme_xkcd
  
# reading dataset
df = pd.read_csv("tips.csv")
  
(
    ggplot(df)
    + facet_grid(facets="~sex")
    + aes(x="day", y="total_bill", fill="time")
    + labs(
        x="day",
        y="total_bill",
    )
    + geom_col()
    + theme_xkcd()
)

Producción:

Adding color to plotnine and ggplot in Python

Guardar la trama

Simplemente podemos guardar la trama usando el método save(). Este método esportará la trama como una imagen.

Ejemplo: Guardar plotnine y ggplot en Python

Python3

import pandas as pd
from plotnine import ggplot, aes, facet_grid, labs, geom_col, theme_xkcd
  
# reading dataset
df = pd.read_csv("tips.csv")
  
plot = (
    ggplot(df)
    + facet_grid(facets="~sex")
    + aes(x="day", y="total_bill", fill="time")
    + labs(
        x="day",
        y="total_bill",
    )
    + geom_col()
    + theme_xkcd()
)
  
plot.save("gfg plotnine tutorial.png")

Producción:

Saving the plotnine and ggplot in Python

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *