如何使用 Python 通过代码创建图表

这篇具有很好参考价值的文章主要介绍了如何使用 Python 通过代码创建图表。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Diagram as Code 工具允许您创建基础架构的架构图。您可以重复使用代码、测试、集成和自动化绘制图表的过程,这将使您能够将文档视为代码,并构建用于映射基础架构的流水线。您可以使用 diagrams 脚本与许多云提供商和自定义基础架构。

在本教程中,您将使用 Python 创建一个基本的图表,并将其上传到对象存储桶。完成后,您将了解 diagrams 脚本的工作原理,从而能够创建新的集成。

步骤 1 — 安装 Graphviz

在这一步中,您将安装 Graphviz 工具。Graphviz 是 diagrams 模块的引擎,它生成图表本身。

首先,更新服务器的软件包:

sudo apt update

然后,使用以下命令安装 Graphviz:

sudo apt install -y graphviz

-y 选项会自动回答安装过程中的任何额外提示。您也可以下载其他发行版的 Graphviz。

安装完成后,您将拥有安装的 Graphviz。

因为您将在本教程后面使用 Pip3 安装 Python 依赖项,您可以检查您是否有正确的版本:

pip3 --version

您应该会看到类似以下的内容:

pip 20.0.2 from /usr/lib/python3/dist-packages/pip (python 3.8)

在这一步中,您更新了服务器,安装了 Graphviz,并检查了 Pip 的版本。接下来,您将构建 diagrams 脚本。

步骤 2 — 构建 Python 脚本

在这一步中,您将在 Python 中编写一个示例图表脚本。

首先,创建一个工作文件夹:

mkdir ~/my-diagram

创建项目文件夹后,使用以下命令进入该文件夹:

cd ~/my-diagram

然后,创建一个 requirements.txt 文件以跟踪项目依赖项:

echo -e "diagrams==0.21.1\ngraphviz==0.16" | tee requirements.txt

此命令有两个关键字:echo 将打印字符串,-e 选项将使用 \n 插入来解析新行,以创建一个格式良好的 requirements 文件。

| 符号表示将 echo 语句的结果传递给管道。tee 命令接受管道输入,并根据列出的参数创建一个新文件:在本例中,是 requirements.txt

Python 中的 requirements.txt 文件提供了运行脚本所需的模块列表。目前,该项目有两个依赖项。
创建文件后,您将看到以下输出:

diagrams=0.21.1
graphviz=0.16

此显示指示了两个工具的版本号。

现在,您将编写 Python 脚本以创建图表图像。

确保您仍在创建的目录中:

cd ~/my-diagram

接下来,使用 nano 或您喜欢的文本编辑器打开一个新文件:

nano my-diagram.py

添加以下代码:

from diagrams import Diagram, Cluster, Edge

此行将导入创建通用图表元素所需的图表部件。

接下来,您必须导入绘制您将构建的 DigitalOcean 基础架构所需的内容。在本示例中,您将创建一个图表,显示两个 Droplets 连接到一个数据库,并且所有主机都将日志发送到一个 Logstash 实例。

添加以下行以导入 Droplet、DbaasPrimary 和 Logstash 图标:

...
from diagrams.digitalocean.compute import Droplet
from diagrams.digitalocean.database import DbaasPrimary
from diagrams.elastic.elasticsearch import Logstash

这些行导入了本教程所需的图标。您可以在 Mingrammer 文档中找到所有可用的 DigitalOcean 图标。

导入图标后,您可以开始构建图表。此代码部分将创建一个名为 My Diagram: Droplets 的图表:

...
with Diagram("My Diagram: Droplets", show=False, filename="my-diagram", direction="LR"):

show 参数可以在创建时打开它,但由于您正在使用 Linux 主机,它已设置为 False。生成的文件将被命名为分配给 filename 的任何字符串。direction 是您希望图表打印的方向。direction 的支持值为 TB(从上到下)和 LR(从左到右)。选择 direction 可以使图表更易于阅读。对于此图表,您将使用 LR

最后,将图标添加到图表中:

...
with Diagram("My Diagram: Droplets", show=False, filename="my-diagram", direction="LR"):
    with Cluster("DigitalOcean"):
        droplet1 = Droplet("My first Droplet")
        droplet2 = Droplet("My second Droplet")

    db = DbaasPrimary("My database")

    logstash = Logstash("Logstash service")

Cluster 在图表中为您的 Droplets 创建一个框,显示它们在名为 DigitalOcean 的空间中。DropletDbaasPrimaryLogstash 将创建以字符串提供的图标名称。

接下来,您将通过添加以下行来在图表中的各个项目之间创建依赖关系:

...
    [droplet1, droplet2] >> db >> [droplet1, droplet2]
    [droplet1, droplet2, db] >> Edge(color="firebrick", style="dashed") >> logstash

您将您的 Droplets 连接到上面创建的 DbaasPrimary 数据库,既读又写。然后,您添加了一个颜色为 firebrick 的虚线,以指示从 Droplets 和主数据库到 Logstash 的连接。

您的最终 my-diagram.py 文件将如下所示:

from diagrams import Diagram, Cluster, Edge
from diagrams.digitalocean.compute import Droplet
from diagrams.digitalocean.database import DbaasPrimary
from diagrams.elastic.elasticsearch import Logstash

with Diagram("My Diagram: Droplets", show=False, filename="my-diagram", direction="LR"):
    with Cluster("DigitalOcean"):
        droplet1 = Droplet("My first droplet")
        droplet2 = Droplet("My second droplet")

    db = DbaasPrimary("My database")
    
    logstash = Logstash("Logstash service")
    
    [droplet1, droplet2] >> db >> [droplet1, droplet2]
    [droplet1, droplet2, db] >> Edge(color="firebrick", style="dashed") >> logstash

保存并关闭文件。

现在,您在同一个文件夹中有一个名为 my-diagram.py 和一个名为 requirements.txt 的文件。

有了这两个文件,您可以安装所需的模块并创建图表。

步骤 3 — 创建图表

完成编写 Python 脚本后,您可以运行它以创建图表。

首先使用 Pip 安装所需的库:

pip3 install -r requirements.txt

您将看到以下输出:

Collecting diagrams==0.21.1
  Using cached diagrams-0.21.1-py3-none-any.whl (23.8 MB)
Collecting graphviz==0.16
  Using cached graphviz-0.16-py2.py3-none-any.whl (19 kB)
Requirement already satisfied: jinja2<4.0,>=2.10 in /usr/lib/python3/dist-packages (from diagrams==0.21.1->-r requirements.txt (line 1)) (2.10.1)
Installing collected packages: graphviz, diagrams
Successfully installed diagrams-0.21.1 graphviz-0.16

安装完成所需的库后,运行 Python 脚本:

python3 my-diagram.py

此脚本将生成一个名为 my-diagram.png 的图表,如下所示:

!The Droplets and Database diagram

有关不同类型图标和使用此模块的其他方法的更多信息,请参阅 Mingrammer 文档。

在这一步中,您已创建了图表。接下来,您将把它添加到对象存储中,以便可以访问 .png 文件。

步骤 4 — 将图表上传到对象存储

为了能够从不同位置查看您的图表,现在将图表上传到对象存储。在本教程中,您将使用 DigitalOcean Spaces 存储桶。

在先决条件中,您已设置了一个 Spaces 存储桶并创建了一组访问密钥。

接下来,安装 s3cmd,这是一个用于通过 CLI 与 s3 风格 API 进行交互的工具:

sudo apt install -y s3cmd

安装完成后,配置 s3cmd

s3cmd --configure

现在,您将使用 API 凭据和其他首选项设置配置。下面的每个提示将作为自己的行加载,因此请使用您的信息和选择更新下面的突出显示部分:

HTTP 代理服务器名称:

新设置:
访问密钥:your-access-key
密钥:your-secret-key
默认区域:EU
S3 端点:ams3.digitaloceanspaces.com
用于访问存储桶的 DNS 样式主机名+端口模板:%(bucket)s.ams3.digitaloceanspaces.com
加密密码:your-encryption-password
GPG 程序路径:/usr/bin/gpg
使用 HTTPS 协议:True
HTTP 代理服务器名称:
HTTP 代理服务器端口:0

S3 端点 需要与 Spaces 设置中提供的端点匹配,并且 DNS 样式 需以类似格式的方式设置。上面的示例使用 ams3,因为此 Spaces 存储桶托管在阿姆斯特丹数据中心 3 上。请相应更新您的设置。

设置完首选项后,选择 Y 来测试凭据:

使用提供的凭据测试访问权限?[Y/n] Y

测试将运行。如果失败,您可以提供新的凭据进行配置并重试。一旦成功,您将看到以下显示:

请稍候,尝试列出所有存储桶...
成功。您的访问密钥和密钥工作正常 :-)

现在验证加密是否有效...
成功。加密和解密工作正常 :-)

现在,您可以通过运行 s3cmd 命令上传文件:

s3cmd put my-diagram.png s3://your_space_name/my-diagram.png

上传完成后,您将看到以下显示:

upload: 'my-diagram.png' -> 's3://your-space-name/my-diagram.png'  [1 of 1]
 43672 of 43672   100% in    0s  1516.98 kB/s  done

如果您的存储桶是公开访问的,或者您已将图表设置为公开,您可以访问 https://your-space-name.ams3.digitaloceanspaces.com/my-diagram.png 查看您的图表。请确保使用您的存储桶名称和其数据中心更新 URL。

如果您的存储桶不是公开访问的,您可以更改文件权限使其公开,或者您可以从存储桶下载图像到本地计算机。

如果您不需要保留在本教程中创建的服务器和对象存储,您可以按照文档中有关删除 Droplets 和销毁 Spaces 的说明进行操作。

结论

您已使用 Python 创建了一个图表,您可以根据需要修改它以满足您未来的图表创建需求。您将不再需要手动拖动框来创建图表。文章来源地址https://www.toymoban.com/news/detail-830453.html

到了这里,关于如何使用 Python 通过代码创建图表的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 几个实用数据可视化图表Python代码!

    可视化是一种方便的观察数据的方式,可以一目了然地了解数据块。我们经常使用柱状图、直方图、饼图、箱图、热图、散点图、线状图等。这些典型的图对于数据可视化是必不可少的。除了这些被广泛使用的图表外,还有许多很好的却很少被使用的可视化方法,这些图有助

    2024年02月09日
    浏览(68)
  • chatgpt赋能python:如何使用Python创建0矩阵

    在Python中,矩阵是一种非常常见的数据结构,经常在科学计算、人工智能、数据分析等领域中使用。创建0矩阵是矩阵操作中的一项基本任务。本文将介绍如何使用Python创建0矩阵。 0矩阵(Zero Matrix)是一个所有元素都为0的矩阵。它的行数和列数可以是任意值,也可以是一个行

    2024年02月06日
    浏览(50)
  • Python 线程池 (thread pool) 创建及使用 + 实例代码

    首先线程和线程池不管在哪个语言里面,理论都是通用的。对于开发来说,解决高并发问题离不开对多个线程处理。我们先从线程到线程池,从每个线程的运行到多个线程并行,再到线程池管理。由浅入深的理解如何在实际开发中,使用线程池来提高处理线程的效率。 线程(

    2024年02月05日
    浏览(44)
  • 如何使用pycharm创建一个python项目

    1.打开pycharm,点击new project 2.修改项目存放位置,点击第二个圆圈,点击add interpreter添加解释器 3.选择一个系统内置的解释器 4.点击创建按钮即可 5.打开该项目 6.在工程的地方点击鼠标右键–》选择new–》选择python file 7.给你的python文件取一个文件名,按回车键,创建成功

    2024年02月12日
    浏览(39)
  • Linux下使用anaconda创建python虚拟环境

    1、创建之前确保已经安装了anaconda。 2、在linux系统终端(也可以在pycharm中的终端下)输入conda指令,进入conda环境。    3、使用指令conda create --name 环境名称 python==3.6 创建自己想要创建的环境(环境名称自己命名)。  4、显示如下,输入y继续。  5、输入conda env list 显示虚拟

    2024年02月08日
    浏览(43)
  • 如何使用 Python 创建 Twitter 应用程序

    简介 通过访问 Twitter API,您可以管理社交媒体账户,并且可以从社交媒体中获取数据。如果您代表一个企业或组织,这对品牌推广很有帮助;对于个人用户和业余程序员来说,这也可以是一种有趣的娱乐方式。 在本文中,我们将概述创建 Twitter 应用程序所需的步骤。 然后,

    2024年02月20日
    浏览(58)
  • python日常记账本源代码,基于PySide6,支持快速查询、绘制图表

    python日常记账本源代码,基于PySide6(Qt for Python 6)的账本,界面简洁、功能强大,支持保存文件、快速查询、绘制图表等,是平时记账的不错选择。账目查询、账本编辑、添加/删除、撤销/重做、统计数据、生成图表。 运行截图: 完整程序下载地址:python日常记账本源代码

    2024年02月11日
    浏览(68)
  • Python小姿势 - Python学习笔记:如何使用Python创建一个简单的计算器

    Python学习笔记:如何使用Python创建一个简单的计算器 在本教程中,我们将学习如何使用Python创建一个简单的计算器。我们将学习如何使用Python的内置函数input()和print(),以及如何使用Python的运算符来完成这个项目。 首先,让我们来看看如何使用input()函数来获取用户输入。i

    2024年02月01日
    浏览(59)
  • 使用python制作常用图表

    运行结果打开柱形图.xlsx即可查看  用特定含义的字符串来指定图表类型,常用图表类型对应的字符串如下: 图表类型 字符串 图表类型 字符串 柱形图 ‘column_clustered\\\' 饼图 \\\'pie\\\' 条形图 \\\'bar_clustered\\\' 圆环图 ‘doughnut’ 折线图 ‘line’ 散点图 ‘xy_scatter\\\' 面积图 ’area‘ 雷达图

    2024年02月06日
    浏览(35)
  • 使用了Python语言和Flask框架。创建一个区块链网络,允许用户通过HTTP请求进行交互,如包括创建区块链、挖矿、验证区块链等功能。

    目录 大概来说: 二、代码注释 1.添加交易方法(add_transaction函数) 2.添加新的节点(add_node 函数) 3、替换链的方法(replace_chain函数) 总结 定义了一个名为Blockchain的类,用于构建区块链。 在Blockchain类中,定义了创建区块、获取上一个区块、工作量证明、哈希计算、验证区

    2024年04月25日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包