07 февраля 2012

Базовые графические возможности R: диаграмма размахов в сочетании с диаграммой рассеяния



В предыдущих сообщениях я показал, как в системе R можно построить т.н. диаграммы размахов и одномерные диаграммы рассеяния. Оба типа диаграмм позволяют весьма наглядно визуализировать свойства анализируемых выборок. Еще более полную картину мы можем получить, совместив оба этих типа на одном графике. Сделать это можно всего несколькоми строками R-кода, используя функции boxplot() и stripchart().

В качестве примера используем рассмотренные ранее данные по эффективности шести инсектицидных средств:

data(InsectSprays)
 
InsectSprays
 
   count spray
1     10     A
2      7     A
3     20     A
4     14     A
5     14     A
6     12     A
7     10     A
8     23     A
9     17     A
10    20     A
11    14     A
12    13     A
13    11     B
14    17     B
15    21     B
...     ...     ...
69    26     F
70    26     F
71    24     F
72    13     F


Построим диаграмму размахов:

boxplot(count ~ spray, 
        outline = FALSE, # outline=FALSE отключает изображение точек-выбросов
        xlab = "Инсектициды",
        ylab = "Количество выживших насекомых",
        main = "Эффективность инсектицидов",
        data = InsectSprays)


При помощи функции stripchart() поверх получившегося графика можно наложить диаграмму рассеяния, которая будет отображать все исходные данные в виде точек. Фокус заключается в использовании аргумента add (добавить) этой функции. При add = TRUE точки будут добавлены к уже существующему графику:

stripchart(count ~ spray, method="stack", data = InsectSprays,
        add = TRUE,
        pch = 1, col = "gray60",
        vertical = TRUE)



При необходимости можно легко повернуть весь график на 90 градусов (аргумент horizontal = TRUE функции boxplot(); в вызове функции stripchart() аргумент vertical можно пропустить - точки автоматически будут изображены в горизонтальной ориентации):

boxplot(count ~ spray, 
        outline = FALSE, # outline=FALSE отключает изображение точек-выбросов
        horizontal = TRUE,
        ylab = "Инсектициды",
        xlab = "Количество выживших насекомых",
        main = "Эффективность инсектицидов",
        data = InsectSprays)
 
stripchart(count ~ spray, method="stack", data = InsectSprays,
        add = TRUE,
        pch = 1, col = "gray60")


Наконец, можно добавить немного "шума" в расположение точек (method = "jitter"; подробнее см. здесь):

boxplot(count ~ spray, 
        outline = FALSE, # outline=FALSE отключает изображение точек-выбросов
        horizontal = TRUE,
        ylab = "Инсектициды",
        xlab = "Количество выживших насекомых",
        main = "Эффективность инсектицидов",
        data = InsectSprays)
 
stripchart(count ~ spray, method = "jitter", jitter = 0.2,
        add = TRUE,
        pch = 1, col = "gray60", data = InsectSprays)



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

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