用拓扑图呈现多层级关系图

大部分拓扑图界面都有显示“分级呈现”的需求。一个复杂的系统或组织,会有很多不同层次的节点和连接关系。如何用图形相对清晰的呈现出来,是一个需要不断探讨的话题。

453

twaver中有很多的方式可以显示“分级”的先是方法:

1、用Group网元组显示。
Group网元组是把一些网元显示在一个组中。这个组可以双击展开、闭合。在闭合状态,它和一个普通的网元节点没什么区别:有位置、有图标、有动作。双击后,默认它会把其内部的孩子显示出来,而自己变成一个覆盖所有孩子的“区域”,形状可能是圆形、方形等。也有人称之为“本地展开”。如下图:

443

2、用SubNetwork子网显示。
SubNetwork可以用于显示一个下级网络,双击后进入一个全新场景(包括拓扑图、地图等),而当前的数据会完全不再显示。这就是类似常说的数据“下钻”或“钻取”(drill down)。子网外观和一个常规节点类似,双击后会把所有孩子在图形上用全新场景显示。和Group不同是它不是“本地展开”,而是“下一级展开”。如下图:

444

3、用单层的连接来呈现。
一提到“分级”大家很容易想到“组”或“子网”。其实很多情况未必非要用这些元素。很多情况,我们需要表达的仅仅是一个“分级”的关系。而这种关系,完全可以在一个层面上用连线来表示。例如一个多公司、多部门、多步骤的业务流程,可以通过类似下图的方式进行呈现:

445

这种图不用组不用子网一样可以把各种层级和关系显示出来,而且更容易观察其“跨级”的连接情况和全局关系。组织内部可能分更多“下级流程”,我们可以配合网元组进行显示:

446

当连线较多时,可能会造成很多交叉,此时可以使用twaver的自动布局进行积极干预,让图形更清晰:

448

但是自动布局也避免不了交叉出现的情况,有些图形结构就是决定了它必然有交叉。此时也可以多想办法让图中连线更清晰一些,例如通过鼠标滑过自动高亮相关的连线:

449

当然,用twaver就要尽量尝试其提供的优秀特性。例如使用矢量进行描绘,就不需要写多少代码,也不怕用户使劲放大导致难看失真:

450

综上所述,我们可以灵活利用平面的拓扑图,来呈现显示世界中各种“分层”的逻辑,而不必一定使用所谓的分组、下钻等特性。简简单单,一张清晰可人的流程图就有了。需要源代码的读者,可直接发邮件向我们索取。

452

454

用拓扑图呈现多层级关系图(二) 上一篇里我们用TWaver制作了一个公司内部的流程图,这一弹,我们来研究如何呈现出公司内部门和员工间的关系网图。先来看看效果: 例子中我们展示的是各部门员工之间的复杂关系图。在公司内部,不仅部门内部员工之间发生着关系往来,部门和部门之间的员工也在发生这各种往来关系。如果你还是用原先的那种表格来呈现,显然很难直观看出各种关系,用图形化的拓扑呈现就会显得一目了然。好了,我们就来分析一下这张图如何 阅读详情

相关推荐

【信息科学与工程学】【通信工程】【企业网、园区网、数据中心、广域网】各类业务网络及其网络演算算法

企业网络是一个复杂的系统,其业务、人员、流量和安全特征相互交织。下面这张表格梳理了这些核心特征及其关联的数学模型,帮你先建立整体概念。特征维度核心特征关联数学模型/方法业务特征​多样性、服务等级协议、混合云趋势图论(拓扑优化)、排队论(M/M/1)、随机过程(业务到达)、优化理论(资源调度)人员特征​角色权限差异、访问行为随机性、安全意识差异概率统计(行为建模)、随机过程(会话生成)、博弈论(安全策略)、访问控制矩阵流量特征​混合性、突发性、时空规律性、方向性(南北/东西向)泊松过程(短时突发)、重尾分布(

weixin_49199313的博客 886

Sugar BI教你怎么做数据可视化 - 拓扑图,让节点连接信息一目了然

新拓扑图用于表达节点及节点间的连接信息,同时支持节点搜索,条件格式

Foolforuuu的博客 1212

TWaver“一站式”UI组件提供包括网络拓扑图、地图、设备面板图、流程图、各种Chart图表、树图、表格等各种通用组件

TWaver HTML5(以下简称TWaver)使用HTML5技术和javascript语言,可在支持HTML5的浏览器上进行绘图。 使用TWaver前,需熟悉几个基本概念:图元(Element)、容器(DataBox)和画布(Network)。 图元:图形中的各种基本元素,如节点(Node)、连线(Link)等; 容器:图元都统一放置在一个容器(DataBox)中进行管理,如同“装鸡蛋的篮子”一样。它负责图元的增/删/改/查等管理操作; 画布:图元最终都绘制在画布(Network)组件上。Network是最终用户看到的图形组件,负责图形画面的具体绘制和交互;

Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)

Twaver-HTML5基础学习(8)拓扑元素(Element)_网元(Element)、节点(Node)

见贤思齐焉,见不贤内自省 2258

画走线的多层拓扑结构的基本步骤

解决传输线效应的另一个方法是选择正确的布线路径和终端拓扑结构。走线的拓扑结构是指一根网线的布线顺序及布线结构。当使用高速逻辑器件时,除非走线分支长度保持很短,否则边沿快速变化的信号将被信号主干走线上的分支走线所扭曲。通常情形下,PCB走线采用两种基本拓扑结构,即菊花链(Daisy Chain)布线和星形(Star)分布。

实战!在 AMD RX 9070 XT (16G) 上使用原生 Windows ROCm 7.1 部署 ComfyUI + Z-Image-Turbo

本文详细介绍了如何在Windows系统下为AMD Radeon RX 9070 XT显卡配置Z-Image-Turbo AI绘图环境。主要内容包括:安装VS Build Tools和最新显卡驱动,配置Conda Python 3.12环境,安装ROCm 7.1.1 SDK及PyTorch适配版本,部署ComfyUI可视化界面。重点解决了AMD显卡在AI绘图中的适配问题,通过--use-split-cross-attention参数优化显存使用,最终成功搭建了可在消费级16G显存设备上运行的AI绘图环境

qq_33614778的博客 4684

拓扑图编辑技巧

拓扑图拖拽后记录当前编辑节点位置 【使用场景】 (1)根据数据库当前数据及结构关系,使用自动布局方式绘制拓扑图 (2)客户定制拓扑图节点位置信息,并保存。 【实现方案】 (1)客户定制后,保存所有节点的位置(x,y)信息 (2)查询到有位置信息,则根据位置信息绘制节点 (3)有新增节点A没有位置信息。则自行计算大概得节点位置信息。 A有兄弟节点,则根据兄弟节点的坐标算出来一个大致的坐标;A没有兄弟节点,则直接画在父节点下,跟父节点X坐标相同,Y坐标依据父节点的Y坐标,给个相对大小的坐标。 (4)自己计算坐标

weixin_45966817的博客 1192

谷歌DreamFusion使用方法及实例详解

DreamFusion 是谷歌提出的基于文本生成3D模型的突破性技术,无需3D训练数据,通过2D扩散模型(如Imagen)与NeRF(神经辐射场)结合实现。以下为使用社区开源实现(如。)的详细步骤及实例。

主攻大数据 人工智能 物联网 安全 低空经济等方向。mtsc 、gtest特邀分享嘉宾 1042

用拓扑图实现多层级关系图(三)可折叠流程图

全矢量可展开的HTML5流程图

TWaver可视化 9430

Unity游戏开发客户端面经——网络(初级)

Unity游戏开发客户端面经 之 网络 篇

Sea3752的博客 1万+

IDEA类和方法注释模板设置(非常详细)

IDEA类和方法注释模板设置(非常详细)

黑桃A的博客 10万+

html5拓扑图图入门,如何使用HTML5 Canvas动态的绘制拓扑图

如何使用HTML5 Canvas动态的绘制拓扑图使用HTML5 Canvas动态的绘制拓扑图: HTML5中引入新的元素canvas,其drawImage 方法允许在 canvas 中插入其他图像( img 和 canvas 元素) 。drawImage函数有三种函数原型: 语法: drawImage(image, dx, dy) drawImage(image, dx, dy, dw, dh) ...

weixin_35789559的博客 2111

外设高级定时器互补输出带死区控制实验

外设高级定时器互补输出带死区控制实验

ff_juju的博客 1652

架构图(拓扑图)画图工具分析整理(静态,动态,可交互图.层级tu)

最近要画架构图. 一方面有图片洁癖,另外一方面又不想不停的挪动图片. 一开始想用脑图软件. 发现脑图是树状的,架构模块依赖图是网状的.(也可以简化为层级图,不画交互关系.类似 dubbo 的架构图. 外部系统,基础系统,应用层.) 到处搜索有什么可编程的方案. 后面搜索到拓扑图. 简单的布局,画图语言javascript,python很多(变量化),但是有自动布局的组...

a50295866的博客 2476

【第六届起重机创意大赛国一作品——资料分享】

文章目录前言一、比赛内容分析二、确定方案与作品模型1.方案简图2.作品模型三、电控部分控制思路单片机选择与资源分配拓展板的设计接线与走线代码分享总结

qq_19308801的博客 7781

构建OneService:打造高效、安全、灵活的企业级数据服务平台

数据服务(OneService)作为统一的数据服务出口,实现了数据的统一市场化管理,有效地降低数据开放门槛的同时,保障了数据开放的安全。

数据与算法架构提升之路专栏 2106

网管平台(二):网络拓扑的生成与应用

网管平台的网络拓扑是其核心功能之一。通过直观的网络拓扑结构,平台能够实现网络的可视化、网络故障诊断、性能优化以及安全监控等功能,大幅提高了运维效率和网络管理的智能化水平。在网络管理中,网络拓扑是一种极其关键且常见的功能。它如同一幅精密的地图,详细描绘出网络中各个节点(如路由器、交换机、服务器等)的位置及其相互之间的连接关系。借助网络拓扑,运维人员能够一目了然地掌握整个网络的布局和结构,这对于网络规划、故障诊断、性能优化以及安全管理等方面都具有重要意义。

乐维社区的博客 1749

基于 Simulink 的三相四线制整流器在三相不平衡负载下的中点电位平衡控制实战教程

本文为三相四线制整流器在中点电位不平衡时的Simulink仿真教程。首先分析中点电位漂移的电荷不平衡机理,提出零序电压注入控制策略。详细演示建模步骤:搭建三相四线制主电路,构建中点平衡控制算法(含MATLAB函数代码),实现控制信号叠加与PWM生成。通过对比仿真验证控制效果,并给出零序电压限幅、中性线电感影响等工程建议。该方案能有效抑制三相不平衡负载下的中点电位波动,保证系统稳定运行。

xiaoheshang_123的博客 50

解决K8s网络复杂性:network-mapper助力微服务通信可观测性与安全合规

在现代云原生架构中,Kubernetes已成为微服务部署的事实标准,但随着服务数量激增,网络通信的复杂性呈指数级增长。**network-mapper**作为一款强大的Kubernetes流量映射工具,能够自动发现集群内服务通信、互联网流量及云服务(如AWS IAM)交互,通过文本、意图或图像形式直观呈现网络拓扑,为微服务可观测性与安全合规提供关键支持。 ## 为什么需要网络流量映射?3大核心痛

gitblog_00643的博客 399

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

可视化运维监控 | 让故障可见、可控、可定位

运维数据爆炸式增长,数据杂乱无章、故障排查滞后、业务状态模糊等问题持续困扰着运维团队,成为制约运维效率升级的瓶颈。Lerwee通过运维可视化打破抽象数据的壁垒,将分散的运维指标、拓扑关系、业务状态转化为直观可感的可视化形态,让运维全流程状态可感知、问题可快速定位、决策有数据支撑。

乐维社区的博客 531

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

重大运维技术突破|基于DeepSeek实现故障根因分析

通过AI算法与知识库联动,智能分析告警数据与拓扑信息,实现分钟级故障根因定位。其创新方案包含:1)大模型驱动的智能闭环,整合DeepSeek等AI能力实现自动化诊断;2)全栈监控体系覆盖基础设施、网络及中间件层;3)自动生成的网络/业务拓扑快速定位影响范围;4)本地化知识库沉淀3000+专家经验。该方案将传统数小时的人工诊断压缩为智能分析流程,推动运维从"救火式"向"预见性"转变。

乐维社区的博客 1202

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

基于AI辅助开发的电力大模型架构图生成实践与优化

下面以一个简化的混合模型为例,展示核心部分的代码实现。

2600_94959841的博客 149

Echarts 画关系拓扑图,并带移动迁移特效,基于vue

效果图如下: 1.安装 Echarts: npm install echarts --save 2.注意:由于关系拓扑图在 echarts配置中 类型 type 是 ‘graph’,其中连接线条是不带有 迁移(effect)特效的 需要配合 type:‘lines’ 同时使用,'lines’是带有 迁移(effect)特效的 vue完整代码如下(内有释义) <template> <div class="echart-block"> <div style="h

c_qianxia5040的博客 3909

TWaver图形之道(七)TWaver开发流程

TWaver开发流程 TWaver是一种前台解决方案,它的地位在系统多层结构的UI层,开发的过程通常是:数据采集,数据转化,视图关联,界面交互,业务操作,然后重复这个过程。 下面用代码来说明这个过程,以TWaver Flex为例: 整体结构 首先看示例代码的整体结构,创建了一个拓扑图组件,设置好宽高布局,在程序初始化完成后,调用init()函数,注册了两个图片,然后进行网元数据的填充,对于...

web开发自学 427
上一篇: 当ECharts碰到TWaver
下一篇: 数字图像处理技术在TWaver可视化中的应用
subnetwork
博客等级 码龄17年 17粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值