`
uuu999ggg
  • 浏览: 42504 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在Django中应用Graphviz

阅读更多

前阵子实习,在项目中用Graphviz画依赖图,感觉效果不错。在这里分享下。

具体Graphviz的介绍,把基本的命令行语句,Gallery的例子看看,马上就可以上手了。

 

在Django中应用Graphviz也相当简单,应用Template可以写出很漂亮的代码,结构十分清晰。

 

首先定义一个模板:

 

 

file_template = """
    {{file.name}}[style=filled, color=green];
    {% if file.dependcy_app %}
        node[color=deepskyblue, style=filled]
        {{file.dependcy_app.name}}->{{file.name}};
    {% endif %}
    {% if file.depency_resource.all %}
        {% for app in file.depency_resource.all %}
                {{file.name}}->{{app.name}}
        {% endfor%}
    {% endif %} 
"""

 然后渲染模板

request = Context({'file': file,})
        dot = head_template
        t = Template(file_template)
        dot += '\n' + t.render(request) + tail_template
        generate(file, dot)

 生成图片

file = open(filename, 'w')
file.write(dot)
file.close()
cmd = "%(path)s/dot -Tpng %(input)s -o               	%(output)s" %{'path':bin_path,   'input':filename,  'output':outfilename}
 os.system(cmd)

 ok done!

 

是不是很简单呢

 

具体效果可以看官网上的,我这里就不贴图了。

 

我在做的时候遇到几点

  1. subgraph的名称好像只能用cluster开头
  2. 假如有两个a->b的话,就有2条线,如果不想要的话,graph前面加上个strict就行了
  3. 生成图片的格式是svg的话,可以点击跳转~~cool
  4. 可以为图片生成一个title

唯一的缺点好像是官方的讨论不够活跃啊。。不过google一下还是能解决的!

 

分享到:
评论

相关推荐

    django-detect-cyclic:Django检测循环

    jquery.graphviz (进入应用程序,仅转换为svg-js格式) 安装 在您的settings.py中: INSTALLED_APPS = ( 'django_detect_cyclic', ) 在您的urls.py中: urlpatterns = patterns('', (r'^admin/detect_cyclic/...

    基于python+Django旅游城市关键词分析源码数据库论文.docx

    关键词在本系统中起到了关键的作用,它们不仅是信息检索的依据,也是衡量城市旅游资源丰富度和受欢迎程度的重要指标。通过关键词分析,可以为用户提供更精确的搜索结果,同时为旅游行业提供数据支持,帮助其制定更...

    基于决策树的垃圾邮件分类器的设计与实现1

    该项目使用 Python 语言作为开发语言,使用 Django 框架作为 Web UI 框架,并使用了多种依赖库,如 jieba、numpy、scipy、scikit-learn、graphviz、matplotlib 等。 资源主要知识点: 1. 决策树算法:该项目使用了...

    python知识图谱系统后台服务.zip

    接下来,我们将深入探讨Python在知识图谱系统中的应用,以及可能涉及的相关技术栈。 1. **Python基础知识**:Python是一种高级编程语言,以其简洁明了的语法和强大的库支持而闻名。在知识图谱项目中,Python常用于...

    python模块下载及安装方法.pdf

    1. adodb:这是一个数据库连接组件,用于在Python中访问数据库,尤其适用于Windows环境。 2. bsddb3:BerkeleyDB的Python接口,提供键值存储服务,常用于数据持久化。 3. Cheetah-1.0:一个模板引擎,用于动态生成...

    动态增加组织树形结构图

    在IT领域,组织树形结构图是一种常见的数据可视化方式,尤其在管理信息系统、人力资源系统以及企业资源规划系统中被广泛使用。它清晰地展示了公司的层级结构,从最高管理层到最基层员工,每个节点代表一个职位或者...

    python模块下载及安装方法.docx

    在Python编程中,模块是代码组织的基本单位,它们封装了特定的功能,可以被导入到其他程序中使用。以下是一些常用的Python模块及其安装方法: 1. **adodb**:这是一个用于连接数据库的组件,特别是对于Windows环境...

    常用的python模块功能和下载地址借鉴.pdf

    7. **Django**:流行的Web框架,用于快速开发安全和可维护的网站。 8. **docutils**:用于编写和处理各种格式的文档,如reStructuredText。 9. **dpkt**:提供数据包的解包和组包功能,常用于网络协议分析。 10. ...

    常用的python模块功能和下载地址.pdf

    以下是一些在Python开发中常用的模块及其功能: 1. **adodb**: ADODB(ActiveX Data Objects Database)是用于Python连接数据库的组件,尤其适用于Windows环境。 2. **bsddb3**: 提供BerkeleyDB接口,这是一个高...

    Packt.Mastering.Python.Networking.2017

    本章节将深入探讨TCP/IP模型中的各个层次及其功能,包括应用层、传输层、网络层和链路层,并且解释它们在现代网络通信中的作用。 - **OSI模型**:OSI(开放系统互连)模型是一种理论上的网络分层架构,它分为七层...

    常用的python模块功能和下载地址.docx

    这些模块只是Python生态中的冰山一角,它们各自在不同的领域发挥着重要作用,使得Python成为了一个功能全面、易于扩展的语言。无论是Web开发、数据分析、科学计算,还是网络编程、自动化任务,都有相应的模块可以...

Global site tag (gtag.js) - Google Analytics