Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Идеологически верная графика




Несмотря на своё разнообразие, графическая система в R построена на основе строгих правил. Выбор типа графика, основных цветов и символов для изображения точек, расположение подписей и т.д. был тщательно продумано создателями. Одним из ключевых для R исследований является книга Уильяма Кливленда «Элементы графической обработки данных». Многие его идеи были осуществлены именно в S-PLUS, а затем и в R. Например, Кливленд нашёл, что традиционные «столбчатые» графики очень плохо воспринимаются, особенно когда речь идёт о близких значениях данных, и предложил им на замену: «точечные диаграммы». Вот так они реализованы в R:

> dotchart(Titanic[,,"Adult","No"],

Рис. 2.3. Точечная диаграмма. График-решётка

+ main=’Погибшие␣на␣"Титанике"’)

Встроенная таблица данных Titanic — это четырёхмерная матрица, которая отражает статистику по возрастным группам, типу билета и полу. Особенно активно Кливленд (и далеко не только он) возражал против использования трёхмерных графиков и так называемых «пирогов». Поначалу «пирожных» графиков в R вовсе не было3, причём по принципиальным соображениям. Трёхмерных графиков в R и сейчас немного (правда, есть особый пакет rgl, который позволяет строить такие графики на базе OpenGL), а если Вы хотите узнать, как меняется поведение двух переменных по отношению к третьей, R предлагает так называемые «Trellis graphs» или графики-решётки:

> coplot(log(Volume) ~ log(Girth) | Height, data = trees)

При выполнении этой команды на рисунке отображается как зависит объём древесины от объёма кроны (в логарифмической шкале) у деревьев различной высоты. Действительно, такое представление гораздо эффективнее трёхмерного. Странно, что распространённые пакеты статобработки почти не используют графики-решётки, хотя их наличие неоднократно называлось одной из главных при- чин коммерческого успеха S-PLUS.

Интерактивность

Интерактивная графика позволяет выяснить, где именно на графике расположены нужные Вам точки и разместить объект (скажем, подпись) в нужное место, а также проследить «судьбу» одних и тех же точек на разных графиках. Кроме того, если данные многомерные, то можно вращать облако точек в плоскости разных переменных с тем чтобы выяснить структуру данных. Ещё несколько лет назад пришлось бы написать, что здесь вместо R следует воспользоваться другими аналитическими инструментами, но R развивается так быстро, что все эти методы теперь доступны, причём в нескольких вариантах. Например, так можно добавлять подписи в указанную мышкой область графика:

> plot(1:20)

> text(locator(), "Моя␣любимая␣точка", pos=4)

После того как введена вторая команда, надо щёлкнуть левой кнопкой мыши на выбранной точке в графике, а затем уже без разницы где щёлкнуть правой кнопкой мыши. Интерактивная графика других типов реализована командой identify(), а также пакетами rggobi, TeachingDemos и iplot.

 

Как сохранять результаты

Начинающие работу с R обычно просто копируют результаты работы (скажем, данные тестов) из консоли R в текстовый файл. И действительно, на первых порах этого может оказаться достаточно. Однако рано или поздно возникает необходимость сохранять объёмные объекты (например, таблицы данных), созданные в течении работы. Можно использовать уже упомянутый в начале статьи внутренний бинарный формат, но это не всегда удобно. Лучше всего сохранять таблицы данных в виде текстовых таблиц, которые потом можно будет открывать другими приложениями или текстовыми редакторами. Для этого служит команда write.table():

> write.table(file="trees.csv", trees, + row.names=F, sep=";", quote=F)

В текущую рабочую директорию будет записан файл trees.csv, образованный из встроенной в R таблицы данных trees. А что, если надо записать во внешний файл результаты выполнения команд? В этом случае используется команда sink():

> sink("1.txt", split=T)

> 2+2 [1] 4

> sink()

В этом случае во внешний файл запишется строчка «[1] 4», то есть результат выполнения команды. Сама команда записана не будет, а если хочется, чтобы она была записана, то придётся ввести что-то вроде:

> print("2+2") [1] "2+2"

> 2+2 [1] 4

то есть повторять каждую команду два раза. Для сохранения истории команд служит команда savehistory(), а для сохранения всех созданных объектов — save.image(). Последняя может оказаться также полезной для сохранения про- межуточных результатов работы, если не уверены в стабильности работы компьютера.

2.4. Мастера отчётов

Таблицы, созданные в R, можно сохранять и в более «приличном» виде, например, в форматах L ATEX ([1]) или HTML, при помощи пакета xtable. Естественно, хочется пойти дальше, и сохранять в каком-нибудь из этих форматов вообще всю R-сессию. Для HTML такое возможно, если использовать пакет R2HTML с CRAN:

> library(R2HTML)

> dir.create("example")

> HTMLStart("example") HTML

> 2+2 HTML

> plot(1:20) HTML

> HTMLplot() HTML

> HTMLStop()

>

В рабочей директории будет создана поддиректория example и туда будут записаны HTML-файлы, содержащие полный отчёт о текущей сессии, в том числе и созданный график. Можно пойти и ещё дальше. Что, если создать файл, который будет содержать код R, перемешанный с текстовыми комментариями, и потом «скормить» этот файл R так, чтобы фрагменты кода заменились на результат их исполнения? Идея эта называется «literate programming» (грамотное программирование) и принадлежит Дональду Кнуту, создателю TEX. В случае R такая система используется для автоматической генерации отчётов — «фичи», которая фактически отсутствует в остальных статистических пакетах и делает R поистине незаменимым. Для создания подобного отчёта, для начала, надо набрать простой файл c L ATEX-подобной структурой и назвать его, например, test-Sweave.Rnw:

\documentclass[a4paper,12pt]{scrartcl} % Стандартная шапка для \LaTeX-документа \usepackage[T2A]{fontenc} % В зависимости от используемой локали вместо utf8 нужно %поставить cp1251 или koi8-r \usepackage[utf8]{inputenc} \usepackage[english,russian]{babel} \usepackage{indentfirst}

\title{Тест Sweave} \author{А.В.\,Тор} \begin{document} % Тело документа \maketitle

\textsf{R} как калькулятор: <<echo=TRUE,print=TRUE>>= 1 + 1 1 + pi sin(pi/2) @

Картинка: <<fig=TRUE>>= plot(1:20) @

\end{document}

Затем этот файл необходимо обработать в R:

> Sweave("test-Sweave.Rnw") Writing to file test-Sweave.tex Processing code chunks... 1: echo print term verbatim 2: echo term verbatim eps pdf

You can now run LaTeX on ’test-Sweave.tex’

При этом создаётся готовый L ATEX-файл test-Sweave.tex. И, наконец, при помощи latex/dvips или pdflatex получить результирующий файл:

=> latex test-Sweave.tex => dvips test-Sweave.dvi => gv test-Sweave.ps

Рис. 2.5. Пример отчёта полученного с помощью команды Sweave

# или => pdflatex test-Sweave.tex => acroread test-Sweave.pdf

Такой отчёт можно расширять, шлифовать, изменять исходные данные, и при этом усилия по оформлению практически сводятся на нет. Если есть желание, чтобы код R набирался моноширинным шрифтом, то в L ATEX-преамбуле Rnw- файла следует добавить строчку:

\usepackage[noae]{Sweave}

Исходный код и авторскую документацию профессора Фридриха Лайша (Friedrich Leisch) можно найти здесь: http://www.ci.tuwien.ac.at/~leisch/Sweave/. Есть и другие системы генерации отчётов, например, уже упомянутый пакет R2HTML умеет производить похожие отчёты в HTML. Есть пакет brew, который позволяет создавать автоматические отчёты в текстовой форме (разумеется, без графиков), и совсем новый пакет odfWeave, который может работать с ODF (формат OpenOffice.org).





Поделиться с друзьями:


Дата добавления: 2016-04-03; Мы поможем в написании ваших работ!; просмотров: 470 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2193 - | 2115 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.007 с.