понедельник, 3 июня 2013 г.

Cairo — делаем графики гладкими

Блог переехал. Актуальная версия поста находится по адресу: http://aakinshin.net/ru/blog/r/cairo/.


R обладает богатейшим функционалом по формированию различных графиков. К сожалению, иногда графики получается не настолько красивыми, как бы нам хотелось. Давайте нарисуем график синуса:
x <- seq(0, 10, by = 0.1)
y <- sin(x)
plot(x, y, type="l")
Если вы хорошо вглядитесь в это изображение, то увидите, что функция получилась не совсем гладкой. Дело в том, что стандартное графическое устройство не поддерживает anti-aliasing. Но не стоит грустить! Нам поможет Cairo! Cairo — это программная библиотека, предназначенная для рендеринга векторной графики с не зависящим от оборудования API. А для языка R есть одноимённый пакет. Вы можете почитать документацию к этому пакету, но пока что мы посмотрим работу на примере. Для начала установим пакет и подключим его:
install.packages("Cairo")
library("Cairo")
Допустим, я работаю под операционной системой Windows и хочу просто посмотреть на гладкий график функции. Нет ничего проще:
CairoWin()
plot(x, y, type="l")
А теперь давайте ещё раз нарисуем наш график, но результат получим в виде png-файла:
CairoPNG("sin.png")
plot(x, y, type="l")
dev.off() # Завершаем формирование файла
Или в виде pdf:
CairoPDF("sin.pdf")
plot(x, y, type="l")
dev.off() # Завершаем формирование файла
В Cairo-функциях можно указывать множество дополнительных параметров, таких как ширина и высота изображения, тип файла, его качество, цвет фона и многое другое. Конечно, для рабочего процесса Cairo не так уж и нужен, но при формировании отчётов о проделанной работе он поможет сделать ваши графики более привлекательными.