Используя пакет igraph
в R, я пришел к следующему неожиданному поведению. Если edge.arrow.mode
для графика (в моем случае неориентированный, но он не имеет значения) указан как 3
(или "<->"
, стрелки на обоих концах), а edge.color указан как rgb()
с опцией alpha < 1
, стрелки становятся по-разному цветной. Похоже, на одном конце есть два наконечника стрелки, а перекрытие создает более темный цвет.Неожиданное поведение цвета стрелки с полупрозрачными краями (igraph, R)
Это нежелательно, так как на графике показаны некоторые стрелки как более темные (более «важные»), чем другие. Фактический график, который я пытаюсь визуализировать, неориентирован, стрелки на концах (все серые, полупрозрачные) ребра будут просто использованы для иллюстрации того, сколько соединений имеет конкретная вершина (граф довольно большой (100-500) вершины) с перекрывающимися краями, поэтому непросто определить визуально, где ребро соединяется с вершиной, что также является причиной использования полупрозрачных ребер и вершин).
Вот некоторые рабочие примеры:
library("igraph")
plot(make_tree(5, mode="undirected"), vertex.size=10, edge.arrow.mode=3, edge.color=rgb(0,0,0,0.2))
plot(make_tree(5, mode="undirected"), vertex.size=10, edge.arrow.mode=3, edge.color=rainbow(5, alpha=0.3))
Вопрос заключается в том, есть способ обойти это, поэтому стрелки будут выглядеть все-таки?
Отображение числа (и, желательно, «направления») связей между вершинами визуально каким-либо другим способом также можно рассматривать (но обратите внимание, что цвет вершин (полноцветный спектр) уже используется для другого визуального средства и вершина края окраски на вершине, что сделает вещи слишком rainbow'sy). Изменение формы вершин, указывающее степень связности, не является хорошим решением (редактировать - благодаря Tad). При этом все стрелки будут иметь сплошной цвет (но, похоже, не существует способа изменить цвет стрелки отдельно от цвета края).
(Bonus: это ошибка или особенность igraph?)
Это будет работать для небольшой сети и без меток, но у меня есть 100-500 вершины, и каждая вершина имеет короткую метку (всегда), состоящее из трех цифр. Изменение размеров вершин приведет к тому, что метки остаются частично за пределами вершинной формы для менее связанных вершин, которые я бы хотел избежать (и изменение размера текста могло бы сделать его нечитаемым), в то время как суперсвязные вершины покрывали бы слишком большую часть уже перегруженный сетевой сюжет. Я отредактирую вопрос, чтобы включить это ограничение. – user3554004
Комментарий к редактированию.Спасибо, что придумали больше идей. К сожалению, вершинная альфа не будет работать хорошо в моем случае, так как цвет вершин информативен. Я использую все три значения 'rgb()', поэтому низкая альфа на белом фоне будет вводить в заблуждение визуальную вершину, как будто она имеет светлый цвет (или значения, близкие к 1 по всем трем цветным каналам). Поскольку сеть представляет собой социальные отношения, отсутствие стрелок или наличие обеих стрелок семантически эквивалентно; это не проблема. Оба конца просто должны выглядеть эквивалентными/идентичными. – user3554004