graphviz绘图转换

graphviz绘图转换

当使用graphviz画图保存为.gv格式时,会有pdf生成,但是没有对应的jpg格式。

import numpy as np
import matplotlib.pyplot as plt
import graphviz 
from graphviz import Digraph

# 定义节点和边
g = Digraph('RNN Network', filename='rnn_network.gv')
g.attr(rankdir='LR', size='8,5')

with g.subgraph() as s:
    s.attr(rank='same')
    for i in range(6):
        s.node("h"+str(i), label="h"+str(i))
'''
with g.subgraph() as s:
    for i in range(5):
        s.attr(rank='same')
        s.node("x"+str(i+1), label="x"+str(i+1))
        s.node("y"+str(i+1), label="y"+str(i+1))
        g.edge("h"+str(i), "h"+str(i+1), label="Wh")
        g.edge("x"+str(i+1), "h"+str(i+1), label="Wx")
        g.edge("h"+str(i+1), "y"+str(i+1), label="Wy")
'''
with g.subgraph() as s1:
    s1.attr(rank='same')
    for i in range(5):
        s1.node("x"+str(i+1), label="x"+str(i+1))
        g.edge("x"+str(i+1), "h"+str(i+1), label="Wx")

with g.subgraph() as s2:
    s2.attr(rank='same')
    for i in range(5):
        s2.node("y"+str(i+1), label="y"+str(i+1))
        g.edge("h"+str(i+1), "y"+str(i+1), label="Wy")
        
for i in range(5):
    g.edge("h"+str(i), "h"+str(i+1), label="Wh")

# 创建输入、隐藏状态和输出序列
x = np.random.randn(5) 
h = np.random.randn(6)
y = np.random.randn(5)
input_dict = {"x"+str(i+1): str(round(x[i],4)) for i in range(5)}
state_dict = {"h"+str(i): str(round(h[i],4)) for i in range(6)}
output_dict = {"y"+str(i+1): str(round(y[i],4)) for i in range(5)}

# 标注每个时间步长的变量
for i, val in enumerate(x):
    g.node("x"+str(i+1)+"val", label=str(round(val,4)))
    g.edge("x"+str(i+1), "x"+str(i+1)+"val", style="dotted")
for i, val in enumerate(h):
    g.node("h"+str(i)+"val", label=str(round(val,4)))
    g.edge("h"+str(i), "h"+str(i)+"val", style="dotted")
for i, val in enumerate(y):
    g.node("y"+str(i+1)+"val", label=str(round(val,4)))
    g.edge("y"+str(i+1), "y"+str(i+1)+"val", style="dotted")

# 显示图形
g.attr(label="""RNN Network\n5 time steps\n%s\n%s\n%s""" % (input_dict, state_dict, output_dict))
g.view()

把.gv文件转换为jpg格式只需要如下命令即可,前提是已经安装好了graphviz,电脑终端运行dot -V有对应的版本的生成,代表已经有了相关环境。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GS5kED16-1682516953924)(C:\Users\wang\AppData\Roaming\Typora\typora-user-images\image-20230426203159426.png)]

当有对应的.gv文件时,打开终端,使用如下命令,即可转换为jpg文件,同时也可以指定dpi的大小。生成的图片尺度会变大,分辨率会提高,但是dpi还是没有变化。

dot -Tjpg -Gdpi=300 rnn_network.gv -o rnn_network.jpg

还是没有变化。

dot -Tjpg -Gdpi=300 rnn_network.gv -o rnn_network.jpg

有点奇怪的是,我使用-Gdpi指定dpi时,生成的jpg并不是该dpi大小。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百年孤独百年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值