python3使用diagrams绘制架构图的步骤

技术背景

对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些Xmind那种思维逻辑图一样,不仅可以帮我们看到组件之间的联系和层级,还能够展示出组件的全貌。虽然我们也可以用Visio或者Edraw等专业绘图工具来绘制架构图,但是对于工程师而言,用代码来直接绘制架构图,会显得更加的优雅。这里我们介绍的diagrams,就是一个可以用来绘制架构图的python包。

diagrams的安装

与其他python库一样的,diagrams也可以通过pip来进行安装和管理,这里为了更快的安装,我们使用了腾讯的镜像源来加速:

[dechin@dechin-manjaro diagrams]$ python3 -m pip install diagrams -i https://mirrors.cloud.tencent.com/pypi/simple
Looking in indexes: https://mirrors.cloud.tencent.com/pypi/simple
Collecting diagrams
  Downloading https://mirrors.cloud.tencent.com/pypi/packages/d6/4e/d4725222ac080375954d63d3c90243fdaa219fe085327d42b9dc68c71293/diagrams-0.19.1-py3-none-any.whl (19.2 MB)
     |████████████████████████████████| 19.2 MB 6.7 MB/s
Requirement already satisfied: graphviz<0.17.0,>=0.13.2 in /home/dechin/anaconda3/lib/python3.8/site-packages (from diagrams) (0.16)
Requirement already satisfied: jinja2<3.0,>=2.10 in /home/dechin/anaconda3/lib/python3.8/site-packages (from diagrams) (2.11.2)
Requirement already satisfied: MarkupSafe>=0.23 in /home/dechin/anaconda3/lib/python3.8/site-packages (from jinja2<3.0,>=2.10->diagrams) (1.1.1)
Installing collected packages: diagrams
Successfully installed diagrams-0.19.1

基础逻辑关系图

首先我们用diagrams来绘制一个最简单的逻辑关系图,从负载均衡到服务器节点,再到具体的数据库:

# example1.py

from diagrams import Diagram
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service", show=False):
    ELB("lb") >> EC2("web") >> RDS("userdb") # 箭头关系

在这个案例中我们使用了AWS提供的一些基础架构组件的标签,并且可以指定各个组件模块的名称。上述代码可以直接执行:python3 example1.py,然后会在当前目录下生成一个这样的架构图:

整体感觉还是比较精美的,只是如果使用专业工具如Visio等来画图的话,我们还可以直接对图片进行切割,操作起来会更加方便。

组件簇的定义

同样来自于官方文档中的示例,我们不仅可以定义单一的组件,还可以将概念中可以组成一个模块的多个组件组成一个耦合簇,在架构图中展现:

# example2.py

from diagrams import Diagram, Cluster
from diagrams.aws.compute import EC2
from diagrams.aws.database import RDS
from diagrams.aws.network import ELB

with Diagram("Web Service Cluster", show=False):
    with Cluster("DB Cluster"):
        db_master = RDS("master")
        db_master - [RDS("slave1"), RDS("slave2")] # 直线连接
    ELB("lb") >> EC2("web") >> db_master

运行方式也是通过python3 example2.py,同样的会在当前目录下生成一个这样的图像文件:

我们可以看到刚才定义的几个数据库组件,被统一的收纳到了一个数据库的耦合簇中。

总结概要

本文中通过python库diagrams展示了基础的架构图绘制的方法,库中提供了常用的AWS和k8S等场景下常用的组件标签,使得我们用python代码也可以绘制精美清晰的架构图。这里组件之间的连接和耦合关系,也可以通过简单的符号进行实现,这也得益于python中所特有的魔法函数。

以上就是python3使用diagrams生成架构图的步骤的详细内容,更多关于python 用diagrams生成架构图的资料请关注我们其它相关文章!

(0)

相关推荐

  • 如何在CocosCreator里画个炫酷的雷达图

    前言 雷达图(Radar Chart) 也称为网络图.星图或蜘蛛网图. 是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多元数据的图形方法. 适用于显示三个或更多的维度的变量. 雷达图常用于

  • 详解CocosCreator游戏之鱼群算法

    前言 最近想学一下CocosCreator,于是,编辑器下载,启动. 众所周知,边写边学才是最快的学习方法,得写个Demo练练手,那么写什么呢?听说现在<墨虾探蝌>挺火的,那就抄(学习的事怎么能叫抄呢?)写一个类似的小游戏吧! (在<墨虾探蝌>中,鱼的位置固定,到达一定数量后玩家会升级,不会出现一大群鱼的情况,本项目其实和它不同,没有升级进化,是会有一大群鱼的,每条鱼也不是固定位置,而是有自己的运动逻辑,其实和另一个游戏更像,不过我不知道叫什么...) 效果展示: 正文 首先整一个

  • python 如何在 Matplotlib 中绘制垂直线

    介绍 Matplotlib是Python中使用最广泛的数据可视化库之一.Matplotlib的受欢迎程度大部分来自其自定义选项.您可以调整其对象层次结构中的几乎任何元素. 在本教程中,我们将研究如何在Matplotlib图上绘制垂直线,这使我们能够标记和突出显示图的某些区域,而无需缩放或更改轴范围. 创建图 让我们首先用一些随机数据创建一个简单的图: import matplotlib.pyplot as plt import numpy as np fig, ax = plt.subplots

  • 详解CocosCreator优化之DrawCall

    前言 在游戏开发中,DrawCall 作为一个非常重要的性能指标,直接影响游戏的整体性能表现. 无论是 Cocos Creator.Unity.Unreal 还是其他游戏引擎,只要说到游戏性能优化,DrawCall 都是绝对少不了的一项. 本文将会介绍什么是 DrawCall,为什么要减少 DrawCall 以及在 Cocos Creator 项目中如何减少 DrawCall 来提升游戏性能. 什么是 DrawCall DrawCall就是CPU调用图形库(比如DirectX或OpenGL)的图

  • 详解CocosCreator华容道数字拼盘

    前言 华容道是啥玩意? 这种数字拼图游戏大家都玩过吧,他就是典型的华容道之一. 华容道是古老的中国民间益智游戏,以其变化多端.百玩不厌的特点与魔方.独立钻石棋一起被国外智力专家并称为"智力游戏界的三个不可思议". 今天咱们就来了解一下这个华容道. 正文 今天咱们主要以3*3的布局来进行,菜鸟用cocos creator 写了一个简单的demo,下面咱们逐步说一下 1.面板 首先咱们随机生成一个面板排列 2.华容道求解 思路: 穷举法:大家都知道这种游戏的玩法,滑动其中可以滑动的方格,将

  • CocosCreator实现技能冷却效果

    CocosCreator实现技能CD效果 在很多游戏里面都有技能,玩家在点击技能按钮后技能会有一个冷却的时间,当冷却时间过了之后技能才可以再次使用 在cocos中实现这个效果很简单,需要用到精灵组件 首先将技能按钮的图片拖到canvas下 然后在技能按钮下新建一个label 像这样 然后新建TS脚本把下面的代码复制粘贴进去 const {ccclass, property} = cc._decorator; @ccclass export default class NewClass exten

  • Python绘制的爱心树与表白代码(完整代码)

    Python给女朋友带来的快乐 用的的开发工具为pycham,pycham也是广泛用于做Python开发的工具.运用的turtle库,当然了如果是安装了anaconda3这个库那更好,以为这里面有我们会做Python程序设计时用到的大部分的库,turtle它是python中一个绘制图像的函数库,可以用它来绘制很多的东西,比如简单的小黄人.玫瑰花等,这个库也可以生说是一只马良的神笔的吧.比如以下是为女朋友准备的小小的惊喜吧. 1.爱心树 import turtle import random de

  • python opencv常用图形绘制方法(线段、矩形、圆形、椭圆、文本)

    最近学了下 python opencv,分享下使用 opencv 在图片上绘制常用图形的方法. 案例中实现了在图片中添加线段.圆形.矩形.椭圆形以及添加文字的方法,使用 opencv2 实现的. 实现方法 1)画线段 cv.line 在图片中绘制一段直线 # 绘制线段 # 参数1:图片 # 参数2:起点 # 参数3:终点 # 参数4:BGR颜色 # 参数5:宽度 cv2.line(img, (60, 40), (90, 90), (255, 255, 255), 2); 参数说明 参数 值 说明

  • 用R语言绘制ROC曲线的实例讲解

    1 roc曲线的意义 ROC曲线就是用来判断诊断的正确性,最理想的就是曲线下的面积为1,比较理想的状态就是曲线下的面积在0.8-0.9之间,0.5的话对实验结果没有什么影响. 如图: 2代码部分 install.packages("pROC") install.packages("ggplot2") library(pROC) library(ggplot2) #建立曲线 data(aSAH) rocobj1<-roc(aSAHo u t c o m e ,

  • python3使用diagrams绘制架构图的步骤

    技术背景 对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能.这就像我们学习的时候整理的一些Xmind那种思维逻辑图一样,不仅可以帮我们看到组件之间的联系和层级,还能够展示出组件的全貌.虽然我们也可以用Visio或者Edraw等专业绘图工具来绘制架构图,但是对于工程师而言,用代码来直接绘制架构图,会显得更加的优雅.这里我们介绍的diagrams,就是一个可以用来绘制架构图的python包. diagrams的安装 与其他python库一样的,diagrams也可以通过

  • python绘制漏斗图步骤详解

    pyecharts中的Funnel函数可以绘制漏斗图,自动根据数据大小生成由大到小自上而下排列的一个漏斗样的图形. 1.导入Funnel模块. from pyecharts import Funnel 2.初始化图形参数. funnel = Funnel("漏斗图", width=600, height=400, title_pos='center') 3.输入数据并绘图. funnel.add("商品交易行为记录数据", ['浏览','加入购物车','下单','支

  • Python利用Diagrams绘制漂亮的系统架构图

    目录 1.准备 2.基本使用与例子 2.1 初始化与导出 2.2 节点类型 2.3 集群块 2.4 自定义线的颜色与属性 Diagrams  是一个基于Python绘制云系统架构的模块,它能够通过非常简单的描述就能可视化架构,并支持以下6个云产品的图标: AWS.Azure.GCP.K8s.阿里云 和 Oracle 云 基于Diagrams提供的节点,你只需要指定一个云产品(实际上选哪个都一样,我们只需要那个产品相应的图标,你可以选一个自己觉得好看的产品),使用其内部自带的云产品的图标,就能简单

  • PHP中使用GD库绘制折线图 折线统计图的绘制方法

    在PHP中,有一些简单的图像函数是可以直接使用的,但大多数要处理的图像,都需要在编译PHP时加上GD库.除了安装GD库之外,在PHP中还可能需要其他的库,这可以根据需要支持哪些图像格式而定.GD库可以在http://www.boutell.com/gd/免费下载,不同的GD版本支持的图像格式不完全一样,最新的GD库版本支持GIF.JPEG.PNG.WBMP.XBM等格式的图像文件,此外还支持一些如FreeType.Type 1等字体库.通过GD库中的函数可以完成各种点.线.几何图形.文本及颜色的

  • python中Matplotlib实现绘制3D图的示例代码

    Matplotlib 也可以绘制 3D 图像,与二维图像不同的是,绘制三维图像主要通过 mplot3d 模块实现.但是,使用 Matplotlib 绘制三维图像实际上是在二维画布上展示,所以一般绘制三维图像时,同样需要载入 pyplot 模块. mplot3d 模块下主要包含 4 个大类,分别是: mpl_toolkits.mplot3d.axes3d() mpl_toolkits.mplot3d.axis3d() mpl_toolkits.mplot3d.art3d() mpl_toolkit

  • python3使用matplotlib绘制散点图

    本文实例为大家分享了python3使用matplotlib绘制散点图,并标注图例,轴,供大家参考,具体内容如下 代码 from matplotlib import pyplot as plt from matplotlib import font_manager # 使得中文可以显示出来 my_font = font_manager.FontProperties(fname="/usr/share/fonts/truetype/arphic/ukai.ttc") y_3 = [11,

  • C# 使用GDI绘制雷达图的实例

    最近项目要用C#实现画一个雷达图,搜了搜网上竟然找不到C#画雷达图的解决方案,那么自己实现一个吧 实现效果如下图: 代码如下: public static class RadarDemo { static float mW = 1200; static float mH = 1200; static Dictionary<string, float> mData = new Dictionary<string, float> { //{ "速度",77}, {

  • 利用Python的folium包绘制城市道路图的实现示例

    写在前面 很长一段时间内,我都在研究在线地图的开发者文档,百度地图和高德地图的开发者中心提供了丰富的在线地图服务,虽然有一定的权限限制,但不得不说,还是给我的科研工作提供了特别方便的工具,在博客前面我先放上这两个在线地图开放平台的web API的地址链接: 百度地图开放平台 高德地图开放平台 基于这两个平台,博主进行了一系列的开发研究工作,本文介绍其中一项技术,如何用folium包绘制城市道路图,当然,也可绘制非城市道路图,只要提供正确的路名就行了. 开发工具: Python3.7 Spyder

  • Python3 用matplotlib绘制sigmoid函数的案例

    我就废话不多说了,大家还是直接看代码吧~ import matplotlib.pyplot as plt import numpy as np def sigmoid(x): # 直接返回sigmoid函数 return 1. / (1. + np.exp(-x)) def plot_sigmoid(): # param:起点,终点,间距 x = np.arange(-8, 8, 0.2) y = sigmoid(x) plt.plot(x, y) plt.show() if __name__

  • python 绘制斜率图进行对比分析

    你好,我是林骥. 斜率图,可以快速展现两组数据之间各维度的变化,特别适合用于对比两个时间点的数据. 比如说,为了对比分析某产品不同功能的用户满意度,经过问卷调查和数据统计,得到下面这个调查结果: 你不妨自己先思考一下,如何对这组数据进行可视化,才能让信息传递变得更加高效? 下面是我用 matplotlib 制作的图表: 从图中可以直观地看出,功能 C 的用户满意度明显下降,我们用比较鲜明的橙色来表示,以便引起观众重点关注:功能 D 和功能 E 的用户满意度明显提升,我们用蓝色表示,代表数据正在向

随机推荐