【问题标题】:PyDot node label with subscript带下标的 PyDot 节点标签
【发布时间】:2019-10-01 11:32:09
【问题描述】:

我有一个很棒的 pydot 图的附加代码,我希望其中一个标签有下标。我尝试了以下方法,但它只是将其呈现为Y<SUB>2</SUB>。如何用下标获取?

import pydot

graph = pydot.Dot(graph_type='digraph', rankdir="LR")
# add node
graph.add_node(pydot.Node('X', label='X'))
graph.add_node(pydot.Node('Y', label='Y<SUB>2</SUB>'))

# add edege
graph.add_edge(pydot.Edge('X', 'Y'))
graph.write_png("mygraph.png")

【问题讨论】:

    标签: python pydot


    【解决方案1】:

    如果您在您的环境中设置了 LaTex,您可以使用 LaTex 标记为您的图表执行此操作。您必须通过 LaTex 传递结果图,因此需要 dot2tex 工具 https://dot2tex.readthedocs.io/en/latest/

    graph.add_node(pydot.Node('Y', label='$Y_{2}$'))
    

    【讨论】:

    • 不幸的是,dot2tex 似乎转义了所有有用的字符,因此我们最终得到如下所示的乳胶代码: [draw,ellipse] {\\$Y\_\\{2\\} \\$};\n
    【解决方案2】:

    虽然对某些人来说可能很明显,但该问题的实际答案可能是:

    import dot2tex
    import pydot
    
    graph = pydot.Dot(graph_type='digraph', rankdir="LR")
    # add node
    graph.add_node(pydot.Node('X', label='X'))
    #graph.add_node(pydot.Node('Y', label='Y<SUB>2</SUB>'))
    graph.add_node(pydot.Node('Y', label='$$Y_{2}$$'))
    
    # add edege
    graph.add_edge(pydot.Edge('X', 'Y'))
    #graph.write_png("mygraph.png")
    
    # Export to tex
    texcode = dot2tex.dot2tex(graph.to_string(),format='tikz',texmode='math',crop=True)
    with open("test.tex", "w") as f: 
        f.write(texcode) 
    

    然后用

    生成pdf
    pdflatex ./test.tex
    

    【讨论】:

      猜你喜欢
      • 2020-03-07
      • 2017-01-13
      • 2019-01-15
      • 2013-05-22
      • 2020-02-26
      • 2021-10-12
      • 2020-07-08
      相关资源
      最近更新 更多