Что есть ggplot2?
ggplot2 — это внешний пакет языка R, который позволяет строить красивые и сложные визуализации. Как и любой R-пакет, это набор функций, которые позволяют делать те или иные преобразования с графиками. Пакет ggplot2 является частью семейства пакетов tidyverse.
Библиотека ggplot2 позволяет строить красивые графики. Установим библиотеку.
install.packages("ggplot2")
Обратимся к библиотеке ggplot2 (и заодно к dplyr, она нам тоже понадобится):
library(ggplot2)
library(dplyr)
Примечание: ещё есть библиотека tidyverse, которая, помимо прочих библиотек, включает в себя и dplyr, и ggplot2 сразу. Так что, можно установить её и подгружать всегда, когда нужно обрабатывать данные и визуализировать. Для начала решим самую простую задачу: с помощью ggplot построим два графика (квадратичной и линейной функции) и постараемся узнать как можно точнее по графику точку, где эти графики пересекаются. Первое что нам нужно будет сделать это создать необходимый датасет :
library(ggplot2)
set.seed(5)
x = seq(-3, 3, 0.1)
y = 4 - x^2
z = x*2 -4
df = data.frame(x, y, z)
head(df)
>df = data.frame(x, y, z) > head(df) x y z 1 -3.0 1.3 -10.0 2 -2.9 -14.4 -9.8 3 -2.8 4.9 -9.6 4 -2.7 -3.8 -9.4 5 -2.6 -13.9 -9.2 6 -2.5 1.5 -9.0 |
Теперь перейдем к ggplot2. Можно считать, что у библиотеки ggplot2 есть своя философия, поняв которую, строить графики гораздо легче.
Во-первых, графики ggplot многослойные, то есть строятся они поэтапно, по слоям. Сначала указывается датафрейм, с которым мы работаем, и интересующие нас показатели (первый слой), затем указывается тип графика (второй слой), затем настройки для подписей, легенды и прочее (остальные слои). Все слои добавляются через +.
Во-вторых, для любого графика указывается функция aes, сокращенно от aesthetics, в качестве аргументов которой задаются переменные интереса (которые хотим отобразить на графике), а также элементы оформления графика, которое непосредственно связано с переменными в датафрейме. О чём речь? В нашем примере мы укажем какие данные нужно отложить на оси ох и оу:
ggplot(data = df) +
geom_line(aes(x = x, y = y), lwd = 1.2, col = 'red') +
geom_point(aes(x = x, y = y),size=2,shape = 1) +
geom_line(aes(x = x, y = z), lwd = 1.2, col = 'blue')+
theme_linedraw()
Как видите все просто, а в следующий раз займемся более наглядным оформлением. А задачу мы решили: наглядно видно где именно пересекаются графики. Как добавить координатную сетку в ggplot2?
x = seq(-2*pi, 2*pi, 0.1)
y = sin(x)
df = data.frame(x, y)
ggplot(data = df, aes(x,y))+
ggtitle('y(x)=sin(x)')+
scale_y_continuous(breaks = seq(-1, 1, 0.25))+
scale_x_continuous(breaks = seq(-6, 6, 1))+
geom_vline(xintercept = 0,linewidth = 1.5)+
geom_hline(yintercept = 0,linewidth = 1.5)+
geom_line(colour = 'blue',linewidth = 1.2)+
theme_linedraw()

