суббота, 22 октября 2016 г.

Основы ggplot2. Часть 2. Слои


Мы будем конструировать графики с помощью ggplot2, добавляя слои. Добавление новых элементов на график поверх имеющихся - это одна из наиболее замечательных возможностей системы ggplot2. Самые сложные графики можно строить по частям, которые вы можете итеративно добавлять или удалять. В качестве примера можно привести этот график, на котором показана зависимость между продолжительностью звука и F1 для 394 токенов лексической единицы "I".


> I_jean <- read.delim("http://bit.ly/avml_ggplot2_data")<- avml_ggplot2_data="" bit.ly="" http:="" read.delim="" span="">




Этот график состоит из девяти слоев, которые можно поделить на пять типов.



Слой данных


Каждый график ggplot2 имеет слой данных, который определяет данные, на базе которых строится график, и базовые отображения данных на графические элементы. Слой данных создается с помощью функций ggplot() и aes():


ggplot(data, aes(...))


Первый аргумент в ggplot() - это data frame (он должен быть типа data frame), а второй - aes(), который не используется нигде, кроме как внутри функций ggplot2, поэтому более правильно говорить об aes() как о специальном способе задать отображение данных в виде графика.


Для того, чтобы построить приведенный выше график, мы будем использовать данные из data frame I_jean, которые выглядят следующим образом:


> head(I_jean)
  Name Age Sex Word FolSegTrans Dur_msec     F1     F2      F1.n       F2.n
1 Jean   61   f  I'M           M      130  861.7 1335.8 1.6608625 -0.8855366
2 Jean   61   f    I           N      140 1010.4 1349.3 2.6882695 -0.8536494
3 Jean   61   f I'LL           L      110  670.1 1292.7 0.3370482 -0.9873394
4 Jean   61   f  I'M           M      180  869.8 1307.0 1.7168275 -0.9535626
5 Jean   61   f    I           R       80  743.0 1418.7 0.8407333 -0.6897257
6 Jean   61   f I'VE           V      120  918.2 1580.8 2.0512357 -0.3068434


Я решил, что интересная зависимость в этих данных - между продолжительностью звука (Dur_msec) и нормализованным F1 звука (F1.n). А именно, Dur_msec отобразим на ось x, а F1.n - на ось y. Код ggplot2:


> p <- ggplot(I_jean, aes(x = Dur_msec, y = F1.n))<- aes="" ggplot="" jean="" x="Dur_msec," y="F1.n))</span">


Здесь вы сразу можете увидеть отличия ggplot2 от базовых графических функций R. Если раньше вы пользовались только функцией plot(), то вас удивит присваивание вывода ggplot2 объекту, поскольку функция plot() просто создавала график, который не являся объектом. С другой стороны, графики ggplot2 являются объектами, которые вы можете сохранять, обрабатывать и присваивать.


Хотя если вы попробуете прямо сейчас вывести p, то получите сообщение об ошибке. Пока p - это график ggplot2, который содержит все данные, но не содержит графических элементов.

Комментариев нет:

Отправить комментарий