画各种软件工程图对于程序猿来说是家常便饭。比较简单的结构图、流程图、数据流图、类图、柱状图之类的用Visio、XMind、PowerPoint、Excel也就算了,再复杂一点的,如决策树之类的图,用"亿图"之类的软件也可以将就。更多时候画出既能完美表达思路又线条优美的图却是难上加难。
最近看了一篇ceph大神的博客,用桑基图描述crush(一种分布式文件系统的副本分布策略),既形象又优美,那么怎么才能画出这种图呢?
![0a655eeecd0cd0ad936efa6903767e4b.png](https://i-blog.csdnimg.cn/blog_migrate/1ca1d52ab30b1de7a991b5f3abb55857.jpeg)
答案:用代码画,虽然有时候会费点劲儿,但有更大的发挥空间。
准备工作
环境介绍
主要软件:
- anaconda2019.03
- jupyter notebook
- pyecharts
- Linux/Mac/Windows
主要思路:用python的pyecharts画图
搭建python的运行环境,本文选择使用anaconda。
anaconda官网:https://www.anaconda.com/distribution/
对于Mac和Windows一键安装即可,在安装时注意把注册环境变量的选项勾上。打开命令终端后的使用过程各平台都相同。
不过作为一款服务软件,自然首选安装在服务器上,因此,本文以Centos7为例,介绍安装和使用过程。
安装anaconda
# 安装依赖包yum install -y wget tar zip unzip curl bzip2# 下载安装包wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh# 安装bash Anaconda3-2019.03-Linux-x86_64.sh
安装过程中按"空格"跳过声明信息,按提示输入"yes"和"安装目录"后,继续安装步骤,安装过程即可顺利完成。安装完成后,开启一个新的shell终端窗口进行后续操作。
配置操作系统
注:本文为了方便演示才进行如此配置,生产环境请勿执行以下命令。
# 关闭防火墙systemctl stop firewalld.servicesystemctl disable firewalld.servicesystemctl stop iptablessetenforcing 0
安装jupyter notebook
conda install jupyter
配置jupyter
# 生成配置文件jupyter notebook --generate-config# 设置登录密码jupyter notebook password
设置密码时连续输入两次密码即可。
安装图形库
pip install pyecharts
画图
启动jupyter notebook
jupyter notebook --allow-root --ip=0.0.0.0 --port=8888
用代码画图
访问地址:"http://SERVER_IP:8888",
密码:上面步骤中设置的密码;
代码:关注同名微信公众号“麻辣软硬件”后,回复"桑基图"获取。
详细步骤如下图:
![d6c531e8b3b01ad1c94b58aaf84699b6.gif](https://i-blog.csdnimg.cn/blog_migrate/15fc24ccff178cc8fdf26c0bce91488b.gif)
结语
pyecharts不仅仅可以画桑基图,python也不止有pyecharts一种图形库,因此用python画图有很大的发挥空间。尤其是画数学模型相关的图,更是手到擒来。如下:
![0b3e861264ddf784d0aa537bac867530.png](https://i-blog.csdnimg.cn/blog_migrate/54c9f591cad685a602889534bcc8907d.jpeg)
给大家留一个练习题,下面这张分型图近些年比较火,那么它是如何画的?
![de41eb51e95f627328dbdce4b7026b9a.png](https://i-blog.csdnimg.cn/blog_migrate/2a879bd965daa4ccdcbc3b8c36064526.jpeg)
关注同名微信公众号"麻辣软硬件",回复"分型图"获取源代码。