A veces, cuando tratamos con datos jerárquicos, necesitamos combinar dos o más tipos de gráficos en un solo gráfico para una mejor visualización y análisis. Estos se conocen como «gráficos combinados». En este artículo, vamos a ver cómo combinar un gráfico de barras y un gráfico de líneas en el lenguaje de programación R usando ggplot2.
Conjunto de datos en uso: cursos vendidos frente a estudiantes inscritos
Año | Cursos vendidos | Porcentaje de estudiantes matriculados |
---|---|---|
2014 | 35 | 30% |
2015 | 30 | 25% |
2016 | 40 | 30% |
2017 | 25 | 50% |
2018 | 30 | 40% |
2019 | 35 | 20% |
2020 | sesenta y cinco | 60% |
Para trazar un gráfico de barras en R, usamos la función geom_bar().
Sintaxis:
geom_bar(estadísticas, relleno, color, ancho)
Parámetros:
- stat : Configure el parámetro stat para identificar el modo.
- relleno: representa el color dentro de las barras.
- color : Representa el color de los contornos de las barras.
- ancho: Representa el ancho de las barras.
Además, el diagrama de líneas se traza utilizando la función geom_line().
Sintaxis:
geom_line(mapping=NULL, data=NULL, stat=”identidad”, position=”identidad”,…)
Ejemplo:
R
# Entering data year <- c(2014, 2015, 2016, 2017, 2018, 2019,2020) course <- c(35, 30, 40, 25, 30, 35, 65) penroll <- c(0.3, 0.25, 0.3, 0.5, 0.4, 0.2, 0.6) # Creating Data Frame perf <- data.frame(year, course, penroll) head(perf) # Plotting Multiple Charts library(ggplot2) ggplot(perf) + geom_bar(aes(x=year, y=course),stat="identity", fill="cyan",colour="#006000")+ geom_line(aes(x=year, y=penroll),stat="identity",color="red")+ labs(title= "Courses vs Students Enrolled in GeeksforGeeks", x="Year",y="Number of Courses Sold")
Producción:
En el gráfico anterior, podemos observar que el gráfico de barras está en la forma adecuada como se esperaba, pero el gráfico de líneas es simplemente visible. Ocurre debido al factor de escala ya que el gráfico de líneas es para el porcentaje de estudiantes que está en decimal y el eje vertical actual tiene valores muy grandes. Entonces, necesitamos un eje secundario para ajustar la línea correctamente en la misma área del gráfico.
Como la escala entra en escena, tenemos que usar la función de R scale_y_continuous() que viene en el paquete ggplot2. Además, se usa otra función sec_axis() para agregar un eje secundario y asignarle las especificaciones.
Sintaxis:
sec_axis(trans,nombre,descansos,etiquetas,guía)
Parámetros :
- trans : Una fórmula o función necesaria para transformar.
- name : El nombre del eje secundario.
Dado que estamos tratando con un eje Y secundario, necesitamos escribir el comando dentro de scale_y_continuous().
Sintaxis:
scale_y_continuous(nombre,etiquetas,posición,sec.eje,límites,cortes)
El factor de escala es la parte más difícil de manejar cuando se trata de un eje secundario. Dado que el eje secundario debe estar en porcentaje, debemos usar el factor de escala de 0.01 y escribir la fórmula de conversión en el argumento trans de sec_axis() . Y está escalando con 0.01 en la fórmula, también tiene que multiplicar el mismo eje con 100 en geom_line( ) para equilibrar la escala.
Ejemplo:
R
# Entering data year <- c(2014, 2015, 2016, 2017, 2018, 2019,2020) course <- c(35, 30, 40, 25, 30, 35, 65) penroll <- c(0.3, 0.25, 0.3, 0.5, 0.4, 0.2, 0.6) # Creating Data Frame perf <- data.frame(year, course, penroll) # Plotting Charts and adding a secondary axis library(ggplot2) ggp <- ggplot(perf) + geom_bar(aes(x=year, y=course),stat="identity", fill="cyan",colour="#006000")+ geom_line(aes(x=year, y=100*penroll),stat="identity",color="red",size=2)+ labs(title= "Courses vs Students Enrolled in GeeksforGeeks", x="Year",y="Number of Courses Sold")+ scale_y_continuous(sec.axis=sec_axis(~.*0.01,name="Percentage")) ggp
Producción:
El eje secundario agregado será en forma de valor fraccionario como podemos ver arriba. Pero necesitamos el eje secundario en porcentaje. Para convertir a porcentaje, tenemos que usar las etiquetas de argumentos dentro de sec_axis().
Algunas palabras clave importantes utilizadas son:
- escala: Se utiliza para escalar los datos. Un factor de escala se multiplica por el valor de los datos originales.
- etiquetas: Se utiliza para asignar etiquetas.
La función utilizada es scale_y_continuous(), que es una escala predeterminada en «y-aesthetics» en la biblioteca ggplot2. Como necesitamos agregar «porcentaje» en las etiquetas del eje Y, se usa la palabra clave «etiquetas» .
Ahora use debajo del comando para convertir las etiquetas del eje y en porcentajes.
escalas : : porcentaje
Esto simplemente escalará los datos del eje y de decimal a porcentaje. Multiplica el valor actual por 100. El factor de escala es 100.
Ejemplo:
R
# Entering data year <- c(2014, 2015, 2016, 2017, 2018, 2019,2020) course <- c(35, 30, 40, 25, 30, 35, 65) penroll <- c(0.3, 0.25, 0.3, 0.5, 0.4, 0.2, 0.6) # Creating Data Frame perf <- data.frame(year, course, penroll) # Plotting Multiple Charts and changing # secondary axis to percentage library(ggplot2) ggp <- ggplot(perf) + geom_bar(aes(x=year, y=course),stat="identity", fill="cyan",colour="#006000")+ geom_line(aes(x=year, y=100*penroll),stat="identity",color="red",size=2)+ labs(title= "Courses vs Students Enrolled in GeeksforGeeks", x="Year",y="Number of Courses Sold")+ scale_y_continuous(sec.axis=sec_axis( ~.*0.01,name="Percentage of Students Enrolled", labels=scales::percent)) ggp
Producción:
Publicación traducida automáticamente
Artículo escrito por rishabhchakrabortygfg y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA