В среде R представлены 3 разные системы построения графиков. Изначально в эту систему была заложена так называемая базовая графика, base graphics, позже появилась система lattice, которая позволяет комбинировать несколько графиков в виде такого комбинированного рисунка, и позже появилась система ggplot2. Каждая из этих систем более или менее самодостаточная, и освоив одну из них, можно построить любые по сложности графики. Вместе с тем, у каждой из этих систем есть и свои небольшие преимущества по отношению к другим, но есть и недостатки, поэтому, конечно, надо уметь пользоваться всеми тремя системами. К тому же есть люди, которые привыкли к какой-то определенной системе визуализации и пользуются только ей, поэтому для того, чтобы читать их код, надо уметь понимать и другие графические системы. Однако, на наш взгляд, система ggplot2, разработанная Хейли Уикемом, обладает определённой элегантностью, и наш преподавательский опыт показывает, что её осваивают гораздо быстрее и глубже, чем другие системы. О ней и мы будем говорить дальше. Итак, система ggplot2 получила своё название от трёх слов - Grammar, Graphics, Plot. В основе подхода, реализованного в этом пакете, лежит идея грамматики графиков, которую начали разрабатывать еще задолго до развития R, и возможности ggplot2 практически безграничны. С помощью этого пакета можно строить практически любые мыслимые иллюстрации. Это могут быть как простые графики, подобное тех, которые можно построить в exel-е, так и достаточно сложные, комбинированные графики, когда необходимо скомбинировать самые разные типы данных, и вот здесь вы видите достаточно много разных примеров таких графиков, включая визуализацию данных на географических картах, это все картинки, которые вы здесь видите, все построены были в системе ggplot2. Соответственно, если мы его освоим, то в дальнейшем никаких проблем с презентацией своих данных вы иметь не будете. Итак, как же устроен график с точки зрения системы ggplot? На самом деле график напоминает создание аппликации. Берется лист бумаги, он называется базовым слоем. И в этот базовый слой, слой за слоем начинаются вноситься новые элементы. Добавляя новые и новые элементы, вы постепенно дорабатываете свой рисунок до практически идеального состояния. И вот давайте для освоения системы ggplot, возьмем некоторые реальные данные. Это результат исследования зависимости веса новорожденных детей от целого ряда параметров оцененных у матерей. Вот здесь, на слайде вы видите все изученные параметры, их довольно много, мы будем работать с некоторыми из них, соответственно, это переменные, которые входят в состав датафрейма, с которой мы сейчас и будем работать. Поскольку эти данные прилагаются к пакету MASS, то нам необходимо установить этот пакет. Напоминаем, что это можно сделать с помощью функции install packages. Дальнейшее чтение данных выгладит очень просто. Активировав библиотеку MASS, мы передаем той переменной, которая нам будет удобна для чтения, написания, назовем ее baby, содержание датафрейма birthwt, в котором находятся соответствующие данные. И вот самый важный этап, который надо реализовать до того, как мы начнем писать какую-либо код, заключается в том, что надо для себя лично понять, что собственно хочется нарисовать. Вот без этой задумки никуда не деться, поэтому можно для начала написания какого это не было кода набросать некоторый эскиз будущего графика. Например, я хочу нарисовать точечную диаграмму, в которой по оси X будет отложен вес матери, а по оси Y - вес ребенка. Я представляю себе, что у меня будет две оси. По оси X я буду откладывать вес матери, а здесь буду откладывать вес ребенка. Далее, я представляю себе, что эти данные будут представлены в виде точек каких-то, которые будут нанесены здесь в виде вот таких точек. То есть у меня в голове созрел некоторый эскиз будущего графика, а дальше я буду этот график реализовывать в виде текста скрипта. На самом деле дальнейшие действия при построении графика, они очень просты. Они напоминают общение с неким тупым исполнителем роботом. Мы говорим этому роботу: "робот, возьми-ка ты лист бумаги", и выглядит такая команда, очень просто. После активации пакета ggplot2 мы создаем базовый уровень, который создается всегда с помощью функции ggplot. Далее, если мы нажмем Ctrl+Enter, то у нас в окне R-studio, которое предназначена для рисунков, появится вот такой просто серый фон, на котором ничего изображено не будет. Это вот тот самый базовый слой, начальный лист бумаги. Далее, мы говорим роботу: "прочитай таблицу данных!", и это осуществляется очень простым действием. Внутри скобок функции ggplot мы указываем, что источником данных будет dataframe baby. Соответственно, мы этому роботу объяснили, что надо взять dataframe baby и использовать его как источник данных. Далее, нам нужно каким-то образом придумать, что будет отложено по осям, и вот здесь важно отметить, что философия функции ggplot такова, что она работает именно с dataframe-ами, поэтому, когда мы собираемся что-то визуализировать, мы сразу имеем дело с некими данными разбитыми на колонки. И поскольку робот, которому мы это объясняем все, достаточно тупой, он все сделает как ему сказали, мы бы должны всего лишь сказать, что: "возьми в качестве данных, которые будут откладываться по оси X переменную LWT, он это и сделает, а по оси Y, отложи, пожалуйста, переменную BWT - весь младенца, это вес матери". Работ это и сделает. Это делается с помощью специальной функции S, откуда такое взялось, мы поговорим с вами отдельно, так что робот все честно сделал, но мы ему еще не сказали как эти данные надо представить. Изобрази, пожалуйста, эти данные в виде точек. Это делается с помощью функции geom.point, которую мы прибавляем к базовому слою. Соответственно, в этой аппликации, которую мы строим, добавляется новый слой, который выглядит в виде точек, рассеянных по заготовленным осям. Ну, спасибо робот, мы пойдём работать дальше.