Визуализация данных с помощью R и ggplot2

Опубликовано: 15 Сентября, 2022

Пакет ggplot2 на языке программирования R, также называемый Grammar of Graphics , представляет собой бесплатный и простой в использовании пакет визуализации с открытым исходным кодом, широко используемый в R. Это самый мощный пакет визуализации, написанный Хэдли Уикхэмом.

Он включает в себя несколько слоев, на которых он регулируется. Слои следующие:

Строительные блоки слоев с грамматикой графики

  • Данные: элемент представляет собой сам набор данных.
  • Эстетика: данные должны сопоставляться с атрибутами эстетики, такими как ось X, ось Y, цвет, заливка, размер, метки, альфа, форма, ширина линии, тип линии.
  • Геометрия: как наши данные отображаются с использованием точек, линий, гистограмм, столбцов, коробчатых диаграмм.
  • Фасеты: отображает подмножество данных с использованием столбцов и строк.
  • Статистика: биннинг, сглаживание, описательная, промежуточная
  • Координаты: расстояние между данными и отображением с использованием декартовых, фиксированных, полярных, пределов
  • Темы: Без ссылки на данные

Используемый набор данных

mtcars (дорожное испытание автомобиля Motor Trend) включает в себя расход топлива и 10 аспектов автомобильного дизайна и производительности для 32 автомобилей и поставляется с предустановленным пакетом dplyr в R.

R




# Installing the package
install.packages("dplyr")
  
# Loading package
library(dplyr)
  
# Summary of dataset in package
summary(mtcars)

Выход:

      mpg             cyl             disp             hp       
 Min.   :10.40   Min.   :4.000   Min.   : 71.1   Min.   : 52.0  
 1st Qu.:15.43   1st Qu.:4.000   1st Qu.:120.8   1st Qu.: 96.5  
 Median :19.20   Median :6.000   Median :196.3   Median :123.0  
 Mean   :20.09   Mean   :6.188   Mean   :230.7   Mean   :146.7  
 3rd Qu.:22.80   3rd Qu.:8.000   3rd Qu.:326.0   3rd Qu.:180.0  
 Max.   :33.90   Max.   :8.000   Max.   :472.0   Max.   :335.0  
      drat             wt             qsec             vs        
 Min.   :2.760   Min.   :1.513   Min.   :14.50   Min.   :0.0000  
 1st Qu.:3.080   1st Qu.:2.581   1st Qu.:16.89   1st Qu.:0.0000  
 Median :3.695   Median :3.325   Median :17.71   Median :0.0000  
 Mean   :3.597   Mean   :3.217   Mean   :17.85   Mean   :0.4375  
 3rd Qu.:3.920   3rd Qu.:3.610   3rd Qu.:18.90   3rd Qu.:1.0000  
 Max.   :4.930   Max.   :5.424   Max.   :22.90   Max.   :1.0000  
       am              gear            carb      
 Min.   :0.0000   Min.   :3.000   Min.   :1.000  
 1st Qu.:0.0000   1st Qu.:3.000   1st Qu.:2.000  
 Median :0.0000   Median :4.000   Median :2.000  
 Mean   :0.4062   Mean   :3.688   Mean   :2.812  
 3rd Qu.:1.0000   3rd Qu.:4.000   3rd Qu.:4.000  
 Max.   :1.0000   Max.   :5.000   Max.   :8.000  

Пример пакета ggplot2 в программировании на R

Мы разрабатываем визуализацию набора данных mtcars , который включает 32 марки автомобилей и 11 атрибутов, используя слои ggplot2 .

Уровень данных:

На уровне данных мы определяем источник информации для визуализации, давайте использовать набор данных mtcars в пакете ggplot2.

R




# Loading packages
library(ggplot2)
library(dplyr)
   
# Data Layer
ggplot(data = mtcars)

Выход:

Эстетический слой:

Здесь мы будем отображать и сопоставлять набор данных с определенной эстетикой.

R




# Aesthetic Layer
ggplot(data = mtcars, aes(x = hp, y = mpg, col = disp))

Выход:

Геометрический слой:

В геометрическом слое управляйте основными элементами, смотрите, как наши данные отображаются с помощью точки, линии, гистограммы, столбца, ящичной диаграммы.

R




# Geometric layer
ggplot(data = mtcars, 
       aes(x = hp, y = mpg, col = disp)) + geom_point()

Выход:

Геометрический слой: добавление размера, цвета и формы, а затем построение графика гистограммы

R




# Adding size
ggplot(data = mtcars, 
       aes(x = hp, y = mpg, size = disp)) + geom_point()
   
# Adding color and shape
ggplot(data = mtcars, 
       aes(x = hp, y = mpg, col = factor(cyl), 
                          shape = factor(am))) +
geom_point()
   
# Histogram plot
ggplot(data = mtcars, aes(x = hp)) +
       geom_histogram(binwidth = 5)

Выход:

Фасетный слой:

Он используется для разделения данных на подмножества всего набора данных и позволяет визуализировать подмножества на одном графике. Здесь мы разделяем строки по типу трансмиссии и разделяем столбцы по цилиндрам.

R




# Facet Layer
p <- ggplot(data = mtcars, 
            aes(x = hp, y = mpg, 
                shape = factor(cyl))) + geom_point()
  
# Separate rows according to transmission type
p + facet_grid(am ~ .)
   
# Separate columns according to cylinders
p + facet_grid(. ~ cyl)
  

Выход:

Слой статистики

На этом уровне мы преобразуем наши данные, используя биннинг, сглаживание, описательный, промежуточный

R




# Statistics layer
ggplot(data = mtcars, aes(x = hp, y = mpg)) + 
                               geom_point() + 
       stat_smooth(method = lm, col = "red")

Выход:

Слой координат:

В этих слоях координаты данных сопоставляются вместе с упомянутой плоскостью графика, и мы корректируем ось и изменяем расстояние между отображаемыми данными с помощью контрольных размеров графика.

R




# Coordinates layer: Control plot dimensions
ggplot(data = mtcars, aes(x = wt, y = mpg)) +
                               geom_point() +
      stat_smooth(method = lm, col = "red") +
 scale_y_continuous("mpg", limits = c(2, 35), 
                          expand = c(0, 0)) +
  scale_x_continuous("wt", limits = c(0, 25),
            expand = c(0, 0)) + coord_equal()

Выход:

Coord_cartesian() для правильного увеличения:

R




# Add coord_cartesian() to proper zoom in
ggplot(data = mtcars, aes(x = wt, y = hp, col = am)) +
                        geom_point() + geom_smooth() +
                        coord_cartesian(xlim = c(3, 6))

Выход:

Слой темы:

Этот слой управляет более тонкими элементами отображения, такими как размер шрифта и свойства цвета фона.

Пример 1: Тематический слой — функция element_rect()

R




# Theme layer
ggplot(data = mtcars, aes(x = hp, y = mpg)) +
         geom_point() + facet_grid(. ~ cyl) +
        theme(plot.background = element_rect(
            fill = "black", colour = "gray"))

Выход:

Пример 2:

R




ggplot(data = mtcars, aes(x = hp, y = mpg)) +
        geom_point() + facet_grid(am ~ cyl) + 
        theme_gray()

Выход:

ggplot2 предоставляет различные типы визуализации. В пакете можно использовать больше параметров, поскольку пакет дает больший контроль над визуализацией данных. Многие пакеты можно интегрировать с пакетом ggplot2, чтобы сделать визуализации интерактивными и анимированными.