Этим сообщением я запускаю серию статей, посвященных базовым графическим возможностям R. Начнем с функции plot() - главной "рабочей лошадки", используемой для построения графиков в R. Поведение этой функции высокого уровня определяется классом объектов, указываемых в качестве ее аргументов. Соответственно, с помощью plot() можно создать очень большой набор разнотипных графиков.
В качестве примера используем данные по скорости выведения индометацина из организма человека (Kwan K.C. et al. (1976) Kinetics of Indomethacin absorption, elimination, and enterohepatic circulation in man. Journal of Pharmacokinetics and Biopharmaceutics 4, 255–280). Индометацин представляет собой один из наиболее активных противовоспалительных препаратов (подробнее см. здесь). В эксперименте приняли участие шесть испытуемых. Результаты этого исследования входят в базовый набор данных R и доступны по команде
Применив команду
видим, что в состав таблицы Indometh входят переменные Subject (испытуемый), time (время с момента введения препарата) и conc (концентрация препарата в крови). Чтобы облегчить дальнейшую работу, прикрепим таблицу Indometh к поисковому пути R:
Благодаря этой команде, теперь мы можем напрямую обращаться к переменным таблицы Indometh (т.е. использовать их имена непосредственно, например, time вместо Indometh$time; подробнее об обращении к отдельным элементам таблиц с данными см. здесь).
Зависимость концентрации индометацина в крови от времени можно легко изобразить при помощи следующей команды:
Предположим, что перед нами стоит задача отобразить на графике не все исходные данные, а только средние значения концентрации индометацина для каждой временной точки. Рассчитать средние значения (или любые другие количественные величины) для отдельных групп данных позволяет функция tapply() (от table - таблица, и apply - применять; подробнее см. ?tapply):
Обратите внимание на то, что при создании вектора means функция tapply() автоматически присвоила каждому из рассчитанных средних величин имя, соответствующее времени учета концентрации индометацина. Это легко проверить:
Мы можем воспользоваться этим обстоятельством при построении графика следующим образом:
Примеры использования перечисленных значений аргумента type приведены ниже:
Применив команду
видим, что в состав таблицы Indometh входят переменные Subject (испытуемый), time (время с момента введения препарата) и conc (концентрация препарата в крови). Чтобы облегчить дальнейшую работу, прикрепим таблицу Indometh к поисковому пути R:
Благодаря этой команде, теперь мы можем напрямую обращаться к переменным таблицы Indometh (т.е. использовать их имена непосредственно, например, time вместо Indometh$time; подробнее об обращении к отдельным элементам таблиц с данными см. здесь).
Зависимость концентрации индометацина в крови от времени можно легко изобразить при помощи следующей команды:
plot(time, conc)
Предположим, что перед нами стоит задача отобразить на графике не все исходные данные, а только средние значения концентрации индометацина для каждой временной точки. Рассчитать средние значения (или любые другие количественные величины) для отдельных групп данных позволяет функция tapply() (от table - таблица, и apply - применять; подробнее см. ?tapply):
Обратите внимание на то, что при создании вектора means функция tapply() автоматически присвоила каждому из рассчитанных средних величин имя, соответствующее времени учета концентрации индометацина. Это легко проверить:
names(means) [1] "0.25" "0.5" "0.75" "1" "1.25" "2" "3" "4" "5" "6" "8"
Мы можем воспользоваться этим обстоятельством при построении графика следующим образом:
# создаем числовой вектор со значениями времени учета концентрации препарата: indo.times <- as.numeric(names(means)) # строим график: plot(indo.times, means)
Аргументы функции plot()
Функция plot() имеет большое количество управляющих параметров, которые позволяют осуществлять очень тонкую настройку внешнего вида графика. Ниже рассмотрены лишь некоторые из них.1. Параметры xlab и ylab
Параметры xlab и ylab служат для изменения названий осей X и Y соответственно:plot(indo.times, means, xlab = "Время", ylab = "Концентрация")
2. Параметр type
Параметр type позволяет изменять внешний вид точек на графике. Он принимает одно из следующих текстовых значений:- "p" - точки (points; используется по умолчанию)
- "l" - линии (lines)
- "b" - изображаются и точки, и линии (both points and lines)
- "o" - точки изображаются поверх линий (points over lines)
- "h" - гистограмма (histogram)
- "s" - ступенчатая кривая (steps)
- "n" - данные не отображаются (no points)
Примеры использования перечисленных значений аргумента type приведены ниже:
3. Параметры xlim и ylim
Эти два параметра контролирут размах значений на каждой из осей графика. По умолчанию они оба принимают значение NULL - в этом случае размах выбирается программой автоматически. Для отмены автоматических настроек соответствующему параметру необходимо присвоить значение в виде числового вектора, содержащего минимальное и максимальное значения, которые должны отображаться на оси. Например:4. Параметры axes и ann
Эти два параметра контролируют отображение осей и их названий соответственно. Каждый из них может принимать два значения - TRUE или FALSE:5. Параметр log
При помощи аргумента log можно перевести одну или обе оси графика на логарифмическую шкалу, например:6. Параметр main
Аргумент main служит для создания названия графика. По умолчанию название размещается в верхней части рисунка:plot(indo.times, means, xlab = "Время", ylab = "Концентрация", main = "Скорость выведения индометацина", type = "o")
В последующих сообщениях будут рассмотрены многие другие графические параметры функции plot(), контролирущие внешний вид графиков (например, тип, размер и цвет маркеров и линий, тип и размер шрифта в названиях графика и его осей, использование математических символов в названиях, размещение легенды, и т.п.). Интересующиеся графическими возможностями R могут посетить сайт R Graph Gallery, где представлены не только примеры всевозможных графиков, но и исходный R-код, использованный для их построения.
Как настроить отображение сетки на графике. Это же параметр grid() да?
Спасибо!
Отправить комментарий