Свойство edge_gradient инструмента "График"

Я хотел бы использовать свойство edge_gradient в gt.graph_draw() Graph Tool, чтобы лучше визуализировать направление соединений на графиках, которые слишком переполнены маркерами, такими как стрелки.

Из описания в документах кажется, что это свойство должно делать именно это. В настоящее время, однако, он позволяет мне установить сплошной цвет только для краев.

Я использую свойство следующим образом:

egradient = g.new_edge_property('vector<double>')
g.edge_properties['egradient'] = egradient
e = g.add_edge(v1, v2)
egradient[e] = (0.9, 0.329,0.282,0.478,1)
...
gt.graph_draw(g, ... edge_gradient=g.edge_properties["egradient"])

Внешний вид останется неизменным, если я изменю первое значение в (0.9, 0.329,0.282,0.478,1), и если я попытаюсь передать ему список кортежей, я получу это из внутренних инструментов графического инструмента:

TypeError: float() argument must be a string or a number

Как я могу добиться того, что я ищу в графическом инструменте? Если я не могу, то для чего еще на самом деле подходит первое значение в 5-кортеже градиента края?


person TheChymera    schedule 16.09.2016    source источник


Ответы (1)


edge_gradient на самом деле ожидает список целых чисел, а не список кортежей. Я сначала сделал ту же ошибку.

Пример: если вы хотите перейти от белого к черному, ваш параметр `edge_gradient должен выглядеть так:

#              o  r  g  b  a  o  r  g  b  a
edge_gradient=[0, 1, 1, 1, 1, 1, 0, 0, 0, 1]

Вот что означает документация: «Каждая группа из 5 элементов интерпретируется как [o, r, g, b, a], где o — это смещение в диапазоне [0, 1], а остальные значения определяют цвета.

Это становится немного сложно читать, поэтому я отделяю точки остановки и форматирую их следующим образом:

#              offset  r  g  b  a
edge_gradient=[0,      1, 1, 1, 1, \
               0.5,    0, 0, 0, 1, \
               1,      1, 0, 0, 1]

Который переливается от белого к черному и к красному. ...По крайней мере, в теории. У меня возникли проблемы с тем, чтобы edge_gradient работал с более чем двумя точками остановки градиента. Я всегда заканчиваю тем, что некоторые ребра окрашены, как список, который я передаю свойству edge_gradient, а остальные ведут себя странно, например, последний цвет находится посередине.

person kdbanman    schedule 27.10.2017