Я использую python и Graphviz для рисования некоторого кластерного графа, состоящего из узлов. Я хочу присвоить узлам различные цвета (в зависимости от атрибута, например координаты x каждого узла).Автоматически назначать цвет узлам в Graphviz
Вот как я произвожу граф
def add_nodes(graph, nodes):
for n in nodes:
if isinstance(n, tuple):
graph.node(n[0], **n[1])
else:
graph.node(n)
return graph
A = [[517, 1, [409], 10, 6],
[534, 1, [584], 10, 12],
[614, 1, [247], 11, 5],
[679, 1, [228], 13, 7],
[778, 1, [13], 14, 14]]
nodesgv = []
for node in A:
nodesgv.append((str(node[0]),{'label': str(node[0]), 'color': ???, 'style': 'filled'}))
graph = functools.partial(gv.Graph, format='svg', engine='neato')
add_nodes(graph(), nodesgv).render(('img/test'))
А теперь я хочу, чтобы назначить цвет каждому узлу с упорядочением первого значения каждого узла. Более конкретно, что я хочу, это красный узел (517), желтый узел (534), зеленый узел (614), синий узел (679) и фиолетовый узел (778).
Я знаю, как назначить цвета на графике, но шляпа я ищу что-то похожее на с = х части при использовании Matplotlib. Проблема в том, что я не могу заранее знать количество узлов (кластеров), поэтому, например, если у меня есть 7 узлов, мне все же нужен график с 7 узлами, начинающимися с красного, и заканчивающимися фиолетовым.
plt.scatter(x, y, c=x, s=node_sizes)
Значит, есть ли какой-либо атрибут в graphviz? Или может кто-нибудь сказать мне, как работает colormap в matplotlib?
Извините за неясность. T^T
Вы всегда можете использовать захват возврата из grahpviz, а затем называть 'set_array',' set_norm', 'set_cmap' и т. Д. – tacaswell
Как вы производите свой график? Вы смотрите только на назначение цвета на узел или для последовательности назначения цвета? –
@ Ohad Eytan Я отредактировал статью. Sry для неясно – Chu