Nano Hash - криптовалюты, майнинг, программирование

Рисование многоточия между узлами в graphviz

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

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я пытаюсь это сделать, я не могу заставить x3 и xn выстроиться вертикально, как показано здесь: введите здесь описание изображения

Вот что я пробовал:

digraph G {
rankdir=LR
splines=line

subgraph cluster_0 {
    color=white;
    node [style=solid, color=black, shape=circle];
    x1 x2 x3 xn [group=g1];
    label = "Input Features";
}

subgraph cluster_1 {
    color=white;
    node [style=solid, color=red2, shape=circle];
    a1 [group=g2];
    label = "Activation";
}

subgraph cluster_2 {
    color=white;
    node [style=solid, color=green, shape=circle];
    out [group=g3];
    label = "Output";
}

x1 -> a1;
x2 -> a1;
x3 -> a1;
a1 -> out;
x3 -> xn [arrowhead="none", color="black:invis:black"];
}

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

04.04.2019

  • Ваш вопрос о том, как добавить многоточие или как вертикально выстроить узлы? Я спрашиваю вас, потому что я погуглил название вашего вопроса, и ответ на меха не совсем связан с ним. 23.01.2020

Ответы:


1

Добавлять

{ rank = same; x1 x2 x3 xn }
x1 -> x2 -> x3[ style = invis ];

к вашему первому подграфу. Это приводит к тому, что

  • все четыре узла являются одним уровнем, т.е. выстраиваются вертикально
  • три пронумерованных узла остаются вместе

Вот моя версия:

digraph G 
{
    rankdir = LR
    splines = line

    subgraph cluster_0 
    {
        color = white;
        node[ style = solid, color = black, shape = circle];
        { rank = same; x1 x2 x3 xn }
        x1 -> x2 -> x3[ style = invis ];
        label = "Input Features";
    }

    subgraph cluster_1 
    {
        color = white;
        node[ style = solid, color = red2, shape = circle ];
        a1;
        label = "Activation";
    }

    subgraph cluster_2 
    {
        color =white;
        node[ style = solid, color = green, shape = circle ];
        out;
        label = "Output";
    }

    x1 -> a1;
    x2 -> a1;
    x3 -> a1;
    a1 -> out;
    x3 -> xn[ arrowhead = "none", color = "black:invis:black" ];
}

что дает вам

введите здесь описание изображения


E D I T, чтобы ответить на вопрос в вашем комментарии; ключ меняет порядок определений узлов и направления ребер в одном и том же ранге, вероятно, из-за макета rankdir = LR. Ведь есть простое решение!

digraph G 
{
    rankdir = LR
    splines = line

    subgraph cluster_0 
    {
        color = white;
        label = "Input Features";
        node[ style = solid, color = black, shape = circle ];

        /* define and connect in reverse order */
        { rank = same; xn x3 x2 x1 }
        x3 -> x2 -> x1[ style = invis ];
        xn -> x3[ arrowhead = "none", color = "black:invis:black" ];
    }

    subgraph cluster_1 
    {
        color = white;
        node[ style = solid, color = red2, shape = circle ];
        a1;
        label = "Activation";
    }

    subgraph cluster_2 
    {
        color =white;
        node[ style = solid, color = green, shape = circle ];
        out;
        label = "Output";
    }

    { x1 x2 x3 } -> a1;
    a1 -> out;
}

введите здесь описание изображения

04.04.2019
  • Есть ли способ заставить x1 начинать сверху и идти вниз к xn для cluster_0? 04.04.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..