Визуализация статических и динамических сетей на R, часть 2

от автора

В первой части:

  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • best practices — эстетика и производительность
  • форматы данных и подготовка
  • описание наборов данных, которые используются в примерах
  • начало работы с igraph

В этой части: цвета и шрифты в графиках R.

Краткое введение I: цвета в графиках R

Цвета — это красиво, но куда важнее то, что они помогают различать типы объектов, градации свойства. В большинстве функций R можно использовать названия цветов, RGB или шестнадцатеричные значения. В простом базовом графике R ниже x и y — координаты точек, pch — символ для обозначения точек, cex — размер точки и col — цвет. Чтобы узнать, какие бывают параметры для построения графиков в R, выполните команду ?par.

plot(x=1:10, y=rep(5,10), pch=19, cex=3, col="dark red") points(x=1:10, y=rep(6, 10), pch=19, cex=3, col="557799") points(x=1:10, y=rep(4, 10), pch=19, cex=3, col=rgb(.25, .5, .3)) 

Как видно, RGB здесь варьируется от 0 до 1. Это настройка по умолчанию для R, но можно установить и диапазон от 0 до 255, используя команду rgb(10, 100, 100, maxColorValue=255).

Можно установить прозрачность элемента, используя параметр alpha (от 0 до 1):

plot(x=1:5, y=rep(5,5), pch=19, cex=12, col=rgb(.25, .5, .3, alpha=.5), xlim=c(0,6))   

Если используется шестнадцатеричное представление цвета, можно установить коэффициент прозрачности, используя adjustcolor из пакета grDevices. Ради интереса также покрасим фон графика в серый с помощью функции par() для установки настроек графики.

par(bg="gray40") col.tr <- grDevices::adjustcolor("557799", alpha=0.7) plot(x=1:5, y=rep(5,5), pch=19, cex=12, col=col.tr, xlim=c(0,6))  

Если вы планируете использовать встроенные названия цветов, вот как можно получить их все:

colors()                          # List all named colors grep("blue", colors(), value=T)   # Colors that have "blue" in the name 

В большинстве случаев нам нужно или несколько контрастных цветов, или оттенки одного цвета. В R есть встроенная функция палитры, которая может это сгенерировать. Например:

pal1 <- heat.colors(5, alpha=1)   #  5 colors from the heat palette, opaque pal2 <- rainbow(5, alpha=.5)      #  5 colors from the heat palette, transparent plot(x=1:10, y=1:10, pch=19, cex=5, col=pal1) 

plot(x=1:10, y=1:10, pch=19, cex=5, col=pal2) 

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

palf <- colorRampPalette(c("gray80", "dark red"))  plot(x=10:1, y=1:10, pch=19, cex=5, col=palf(10)) 

Чтобы добавить прозрачность в colorRampPalette, нужно использовать параметр alpha=TRUE:

palf <- colorRampPalette(c(rgb(1,1,1, .2),rgb(.8,0,0, .7)), alpha=TRUE) plot(x=10:1, y=1:10, pch=19, cex=5, col=palf(10))  

Нахождение хорошей комбинации цветов — непростая задача, при этом встроенные палитры R довольно ограничены. К счастью, эту проблему решают и другие пакеты:

# If you don't have R ColorBrewer already, you will need to install it: install.packages("RColorBrewer") library(RColorBrewer) display.brewer.all() 

В этом пакете одна главная функция — brewer.pal. Для того, чтобы ей воспользоваться, нужно только выбрать необходимую палитру и количество цветов. Давайте взглянем на некоторые палитры RColorBrewer:

display.brewer.pal(8, "Set3") 

display.brewer.pal(8, "Spectral") 

display.brewer.pal(8, "Blues") 

Использование палитр RColorBrewer в графах:

pal3 <- brewer.pal(10, "Set3")  plot(x=10:1, y=10:1, pch=19, cex=4, col=pal3) 

Краткое введение II: шрифты в графиках R

Использование разных шрифтов в графиках R может потребовать определенных усилий. Это особенно актуально для пользователей Windows, пользователи Mac и Linux, скорее всего, могут благополучно пропустить этот раздел.

Для того, чтобы импортировать шрифты из ОС в R, воспользуемся пакетом extrafont:

install.packages("extrafont") library(extrafont)  # Import system fonts - may take a while. font_import()  fonts() # See what font families are available to you now. loadfonts(device = "win") # use device = "pdf" for pdf plot output.  

Теперь шрифты доступны, и можно делать что-то такое:

library(extrafont) plot(net, vertex.size=30) plot(net, vertex.size=30, vertex.label.family="Arial Black" ) 

Когда вы сохраняете графики как PDF-файлы, тоже можно установить шрифты:

# First you may have to let R know where to find ghostscript on your machine: Sys.setenv(R_GSCMD = "C:/Program Files/gs/gs9.10/bin/gswin64c.exe")  # pdf() will send all the plots we output before dev.off() to a pdf file:  pdf(file="ArialBlack.pdf") plot(net, vertex.size=30, vertex.label.family="Arial Black" ) dev.off()  embed_fonts("ArialBlack.pdf", outfile="ArialBlack_embed.pdf") 

ссылка на оригинал статьи http://habrahabr.ru/post/263947/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *