g gnet: Цвет узла оттенков серого для атрибутов непрерывного узла? - PullRequest
0 голосов
/ 22 апреля 2020

В ggnet2 я изо всех сил пытаюсь добавить оттенки серого в узлы на основе непрерывных атрибутов узлов. Вот 2 переменные для иллюстрации:

> get.vertex.attribute(netshenzhen,"day")
# num [1:235] 47 17 16 12 18 48 42 15 20 38 ...

> str(get.vertex.attribute(netshenzhen,"source"))
# chr [1:235] "Traveled to Hubei" "Traveled to Hubei" "Traveled to Hubei" ...

Если я наберу ggnet2(netshenzhen, label = T,color = "day"), вот сгенерированный график. Но «день» - это непрерывная переменная, к которой я хотел бы добавить оттенки серого (более темный цвет для большего количества «дней»). Кроме того, я не могу понять, откуда эта палитра, и я получаю аналогичные результаты, если присоединяю к данным другие непрерывные атрибуты.

сетевой график с непрерывной переменной day

Если я использую фактор вместо этого, он работает как введено в пакете ggnet2. Но я бы очень хотел добавить атрибут непрерывного узла в градациях серого.

сетевой график с факторной переменной source

Я видел решения для ручного кодирования для этого с использованием sta tnet собственного инструмента визуализации . Но я хотел бы знать, есть ли простые (r) решения, использующие g gnet?

Я не очень разбираюсь в R или программировании. Так что примеры кодов с построчными комментариями / объяснениями высоко ценятся. Спасибо!

1 Ответ

0 голосов
/ 23 апреля 2020

Привет ~ Похоже, вы перевернули два графика в своем вопросе: второй - это то, что вы получите, если вы сделаете не передачу факторной переменной, например, source переменной.

Окрашивание в оттенках серого для узлов - это то, что происходит по умолчанию, если вы задаете ggnet2 color переменную, которая не состоит из имен цветов.

Ниже приведено описание соответствия непрерывному (цифра c ) переменная типа day для оттенков серого, а затем для передачи в ggnet2. Интересующая вас строка - это строка, которая создает атрибут вершины day_gray.

library(GGally)
library(network)

n <- network(sna::rgraph(10))
network.vertex.names(n) <- sample(letters, 10)

n %v% "day" <- sample(1:10, 10)
n %v% "day_gray" <- gray.colors(10)[ n %v% "day" ]

ggnet2(n, label = TRUE, color = "day_gray")

Для более гибких решений (в случае, если вам нужно что-то более продвинутое, чем то, что описано выше), я бы порекомендовал пакет ggraph или пакет ggnetwork.

...