Объединение путей на диаграмме потока/аллювиала/санкиPython

Программы на Python
Anonymous
Объединение путей на диаграмме потока/аллювиала/санки

Сообщение Anonymous »

Моя цель — создать блок-схему, в которой потоки сливаются, по сути, иерархический поток, как на этом рисунке:
[img]https://i .sstatic.net/WtrgN4wX.png[/img]

Существует три уровня (или момента времени), отмеченных зеленым цветом. Трудность, по-видимому, заключается в том, что пути сливаются (т. е. два потока не встречаются в новом потоке, который в два раза толще).
Я не нашел способа сделать это с помощью сюжетно , санки Matplotlib или пиаллювиал. Может быть, хитрость в том, чтобы сложить фигурки друг на друга? Но тогда как я могу определить, где поток заканчивается вертикально на крайнем правом зеленом уровне? Фигура должна быть симметричной (т. е. поток должен заканчиваться посередине по вертикали).
Вишенкой на торте решения было бы то, если бы я мог влиять на то, где поток заканчивается (например, в точке точки отмечены синим цветом).
Редактировать
Я помог себе с помощью графического подхода (который вы можете попробовать сами здесь, скопировав код там).

Код: Выделить всё

g = gt.Graph(directed=False)
g.add_vertex(23)
g.add_edge_list([[0, 4], [1, 5], [2, 6], [3, 7], [4, 8], [5, 8], [6, 9], [7, 9], [8, 10], [9, 11], [10, 12], [11, 13], [12, 14], [13, 14], [14, 15]])
pos = g.new_vp('vector')
a = np.array([[-4.5, 3], [-4.5, 1], [-4.5, -1], [-4.5, -3], [-3, 3], [-3, 1], [-3, -1], [-3, -3], [-1.5, 1.5], [-1.5, -1.5], [0, 1.5], [0, -1.5], [1.5, 1.5], [1.5, -1.5], [3, 0], [4.5, 0], [-4.5, 3], [-4.5, 1], [-4.5, -1], [-4.5, -3], [0, 1.5], [0, -1.5], [4.5, 0]])
for v in range(23):
pos[v] = a[v]
gt.graph_draw(
g = g,
pos = pos,
#vertex_color = 'black',
vertex_fill_color = 'black',
vertex_size = 33,
vertex_pen_width = 0,
edge_pen_width = 33,
edge_color = 'black'
output_size = (200, 200),
output = 'tree.png'
)
Изображение

У меня это работает, но было бы неплохо посмотреть, можно ли это сделать в Matplotlib и т. д.


Подробнее здесь: https://stackoverflow.com/questions/784 ... ey-diagram

Вернуться в «Python»