[Перевод] Визуализация статических и динамических сетей на 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))


48fc006fe2834aa5a70034b894ec2100.png

Как видно, 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))  


f99607a127d741ee9ffcdf79dbb9e93e.png

Если используется шестнадцатеричное представление цвета, можно установить коэффициент прозрачности, используя 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)) 


49bd95bca35b4559a8049a7cbff14ca0.png

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

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)


8be21e2c736c4c758b366977040ba4eb.png

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


9491ece619f34e458fbfc9d5e472d35f.png

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

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


af88e216ab8148af8a37d6657580f61a.png

Чтобы добавить прозрачность в 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)) 


afcbdbabc23240d8a8f792e99af57380.png

Нахождение хорошей комбинации цветов — непростая задача, при этом встроенные палитры 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")


af8a284d0a0a4824b0db0a6be4680319.png

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


348bc50e0b6f4806ba51f652c3422ecb.png

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


d33f5fa450ad4e60bd656d9accfd6d20.png

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

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


abc8920ea74b40a0bc387b37debf6ba9.png

Краткое введение 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" )


94317257a03f40a981d534fce2a85d14.png

Когда вы сохраняете графики как 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")

© Habrahabr.ru