В первой части:
В этой части: цвета и шрифты в графиках R.
Цвета — это красиво, но куда важнее то, что они помогают различать типы объектов, градации свойства. В большинстве функций R можно использовать названия цветов, RGB или шестнадцатеричные значения. В простом базовом графике R ниже
Как видно, RGB здесь варьируется от 0 до 1. Это настройка по умолчанию для R, но можно установить и диапазон от 0 до 255, используя команду
Можно установить прозрачность элемента, используя параметр
Если используется шестнадцатеричное представление цвета, можно установить коэффициент прозрачности, используя
Если вы планируете использовать встроенные названия цветов, вот как можно получить их все:
В большинстве случаев нам нужно или несколько контрастных цветов, или оттенки одного цвета. В R есть встроенная функция палитры, которая может это сгенерировать. Например:
Мы также можем создавать свои собственные градиенты с помощью
Чтобы добавить прозрачность в
Нахождение хорошей комбинации цветов — непростая задача, при этом встроенные палитры R довольно ограничены. К счастью, эту проблему решают и другие пакеты:
В этом пакете одна главная функция —
Использование палитр
Использование разных шрифтов в графиках R может потребовать определенных усилий. Это особенно актуально для пользователей Windows, пользователи Mac и Linux, скорее всего, могут благополучно пропустить этот раздел.
Для того, чтобы импортировать шрифты из ОС в R, воспользуемся пакетом
Теперь шрифты доступны, и можно делать что-то такое:
Когда вы сохраняете графики как PDF-файлы, тоже можно установить шрифты:
- визуализация сетей: зачем? каким образом?
- параметры визуализации
- 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")
Wadime
У вас в ссылке на первую часть стоит локальный адрес, поправьте, пожалуйста.
Недавно прошел курс Data Visualization на Coursera — были там похожие темы про визуализацию сетей.
qc-enior
Спасибо, исправила.
Да, вдохновляюсь Coursera, в процессе прохождения data science specialization. Там тоже один из курсов посвящен визуализации (и не только).