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

http://kateto.net/network-visualization
  • Перевод
  • Tutorial
В первой части:
  • визуализация сетей: зачем? каким образом?
  • параметры визуализации
  • 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")
  • +11
  • 9,3k
  • 2
Инфопульс Украина 152,42
Creating Value, Delivering Excellence
Поделиться публикацией
Комментарии 2
    0
    У вас в ссылке на первую часть стоит локальный адрес, поправьте, пожалуйста.
    Недавно прошел курс Data Visualization на Coursera — были там похожие темы про визуализацию сетей.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Самое читаемое