Показ дописів із міткою TikZ. Показати всі дописи
Показ дописів із міткою TikZ. Показати всі дописи

21 серп. 2010 р.

Построение диаграмм Ганта в R

Диаграмма Ганта (Gantt chart) — это инструмент для управления проектами.

Каждый проект имеет цель, временную шкалу. Проекты используют ресурсы. Все проекты состоят из взаимозависимых, индивидуальных шагов, называемых задачами. По своему характеру проекты являются динамическими процессами.

Диаграмма Ганта является удобным и простым инструментом представления структуры задач, наглядно отражающий ход работы над проектом. Первый формат диаграммы был разработан Генри Л. Гантом в 1910 г. Основу диаграммы составляет таблица, в которой перечислены задания и временная диаграмма ресурсов.

В этой публикации описано, как с помощью статистического пакета R описать и нарисовать диаграмму Ганта (этот рисунок впоследствии может быть экспортирован как TikZ и включён в код LaTeX'a).

Вначале следует загрузить нужную библиотеку, частью которой является команда gantt.chart():

> library(plotrix)

Создадим теперь список задач, из которых состоит наш проект:


> Ymd.format<-"%Y/%m/%d" # указываем на вид вводимых дат: год/месяц/день > gantt.info<-list(labels=c("First task","Second task","Third task","Fourth task","Fifth task"), starts=as.POSIXct(strptime(c("2004/01/01","2004/02/02","2004/03/03","2004/05/05","2004/09/09"), format=Ymd.format)),ends=as.POSIXct(strptime(c("2004/03/03","2004/05/05","2004/05/05","2004/08/08","2004/12/12"),format=Ymd.format)),priorities=c(1,2,3,4,5))


Очевидно, что сначала идут имена задач (labels), потом, соответственно, — время их начала (starts) и окончания (ends) в заданном ранее формате, и наконец их приоритетность.

Укажем теперь программе, как именно ставить метки на временной оси:


> vgridpos<-as.POSIXct(strptime(c("2004/01/01","2004/02/01","2004/03/01","2004/04/01","2004/05/01","2004/06/01","2004/07/01","2004/08/01","2004/09/01","2004/10/01","2004/11/01","2004/12/01"),format=Ymd.format))


И как они будут называться на готовой диаграмме:


> vgridlab<-c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")


Финал, строим собственно саму диаграмму:


> gantt.chart(gantt.info,main="Calendar date Gantt chart (2004)",priority.legend=TRUE,vgridpos=vgridpos,vgridlab=vgridlab,hgrid=TRUE)




Читать далее

16 лют. 2010 р.

R, TikZ и LaTeX

Как вставить иллюстрацию в документ LaTeX'а так, чтобы её элементы гармонировали с оформлением всего документа (шрифты, цвета и т. п.)? — Эта проблема особенно актуальна для тех учёных, которые пользуются LaTeX'ом для оформления своих трудов.

В самом примитивном виде она решается с помощью латеховской команды \uncludegraphics, которая вставляет в документ заранее подготовленный рисунок или фотографию. Однако, если мы имеем дело с научными иллюстрациями — схемами, графиками, диаграммами и т. п., то добиваться гармонии текстовых элементов рисунка и самого документа приходится методом долгих проб и ошибок.

Однако есть и другой путь: описать требуемый рисунок командами самого LaTeX'а.

Для этого умные люди придумали много разных средств, среди которых одно из наиболее мощных — пакет TikZ (представление о его возможностях можно получить, взглянув на примеры http://www.texample.net/tikz/examples/all/).

Тем не менее, рисовать нужные нам иллюстрации "с нуля" — занятие довольно муторное (знаю на собственном горьком, но полезном опыте). Поэтому другие умные люди озаботились вопросом автоматизации всего этого процесса: теперь готовить рисунки для TikZ'а (т. е. получать на выходе код, который легко напрямую вставить в LaTeX) можно в таких программах, как GNUPLOT, Blender, Graphviz, Dia, VYM, Inkscape, Matlab и др. Среди них, конечно, нашлось место и R.

Для начала следует установить (в терминале R) соответствующий пакет [при подключённом интернете]:

> install.packages("tikzDevice", repos="http://R-Forge.R-project.org",dependencies=T)

Если установка завершилась удачно, то в дальнейшем то, что рисует R командой plot() и другими (напр. barplot(), hist(), boxplot(), и т. п.) легко экспортировать прямо в LaTeX. Общий алгоритм таков:

> library('tikzDevice')
> tikz(file = "Rplots.tex") # открываем устройство экспорта на запись, указываем имя целевого файла, где будет полученный код TikZ'а и, если надо, указываем опции [см. help(tikz)]
> plot(x,y) # рисуем свой график
> dev.off() # закрываем устройство экспорта.


После этого только остаётся скопировать полученный код в ваш документ — не забудьте указать в преамбуле \usepackage{tikz}.

Читать далее