pydot:是否可以绘制两个具有相同字符串的不同节点?

2024-01-18

我正在使用 pydot 在 python 中绘制图表。 我想表示一个决策树,比如(a1,a2,a3 是属性,两个类是 0 和 1:

       a1>3
      /    \
  a2>10    a3>-7
   /  \     /  \
  1    0   1    0

然而,使用 pydot,只创建了两个叶子,树看起来像这样(附有 png):

       a1>3
      /    \
  a2>10    a3>-7
      |  X  |
      1     0

现在,在这个简单的情况下,逻辑很好,但在较大的树中,属于不同分支的混乱内部节点是统一的。

我使用的简单代码是:

import pydot
graph = pydot.Dot(graph_type='graph')
edge = pydot.Edge("a_1>3", "a_2>10")
graph.add_edge(edge)
edge = pydot.Edge("a_1>3", "a_3>-7")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "0")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "1")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "0")
graph.add_edge(edge)
graph.write_png('simpleTree.png')

我还尝试创建不同的节点对象,而不是创建边并将其添加到图中,但 pydot 似乎检查节点池中是否有具有相同名称的节点,而不是创建一个新节点。

有任何想法吗?谢谢!


您的节点始终需要唯一的名称,否则您无法对它们进行唯一命名以在它们之间连接边。但是,您可以为每个节点指定一个标签,这是渲染时显示的内容。

因此,您需要添加具有唯一 ID 的节点:

graph = pydot.Dot(graph_type='graph')
graph.add_node(pydot.Node('literal_0_0', label='0'))
graph.add_node(pydot.Node('literal_0_1', label='0'))
graph.add_node(pydot.Node('literal_1_0', label='1'))
graph.add_node(pydot.Node('literal_1_1', label='1'))

然后添加连接这些节点的图边:

edge = pydot.Edge("a_2>10", "literal_0_0")
graph.add_edge(edge)
edge = pydot.Edge("a_2>10", "literal_1_0")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "literal_0_1")
graph.add_edge(edge)
edge = pydot.Edge("a_3>-7", "literal_1_1")
graph.add_edge(edge)

与您定义的其余边一起,这使得:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pydot:是否可以绘制两个具有相同字符串的不同节点? 的相关文章

  • (discord.py) 尝试更改成员角色时,“用户”对象没有属性“角色”

    因此 我正在尝试编写一个机器人 让某人在命令中指定的主持人指定的一段时间内暂停角色 我知道该变量称为 小时 即使它目前以秒为单位 我稍后会解决这个问题 基本上 它是由主持人在消息 暂停 personmention numberofhours
  • Pycharm Python 控制台不打印输出

    我有一个从 Pycharm python 控制台调用的函数 但没有显示输出 In 2 def problem1 6 for i in range 1 101 2 print i end In 3 problem1 6 In 4 另一方面 像
  • 如何打印没有类型的defaultdict变量?

    在下面的代码中 from collections import defaultdict confusion proba dict defaultdict float for i in xrange 10 confusion proba di
  • 如何在Windows上模拟socket.socketpair

    标准Python函数套接字 套接字对 https docs python org 3 library socket html socket socketpair不幸的是 它在 Windows 上不可用 从 Python 3 4 1 开始 我
  • 为 pandas 数据透视表中的每个值列定义 aggfunc

    试图生成具有多个 值 列的数据透视表 我知道我可以使用 aggfunc 按照我想要的方式聚合值 但是如果我不想对两列求和或求平均值 而是想要一列的总和 同时求另一列的平均值 该怎么办 那么使用 pandas 可以做到这一点吗 df pd D
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从 scikit-learn 导入 make_blobs [重复]

    这个问题在这里已经有答案了 我收到下一个警告 D Programming Python ML venv lib site packages sklearn utils deprecation py 77 DeprecationWarning
  • 如何使用装饰器禁用某些功能的中间件?

    我想模仿的行为csrf exempt see here https docs djangoproject com en 1 11 ref csrf django views decorators csrf csrf exempt and h
  • 在循环中每次迭代开始时将变量重新分配给原始值(在循环之前定义)

    在Python中 你使用 在每次迭代开始时将变量重新分配给原始值 在循环之前定义 时 也就是说 original 1D o o o for i in range 0 3 new original 1D revert back to orig
  • NameError:名称“urllib”未定义”

    CODE import networkx as net from urllib request import urlopen def read lj friends g name fetch the friend list from Liv
  • Python:字符串不会转换为浮点数[重复]

    这个问题在这里已经有答案了 我几个小时前写了这个程序 while True print What would you like me to double line raw input gt if line done break else f
  • Python:尝试检查有效的电话号码

    我正在尝试编写一个接受以下格式的电话号码的程序XXX XXX XXXX并将条目中的任何字母翻译为其相应的数字 现在我有了这个 如果启动不正确 它将允许您重新输入正确的数字 然后它会翻译输入的原始数字 我该如何解决 def main phon
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 在Python中重置生成器对象

    我有一个由多个yield 返回的生成器对象 准备调用该生成器是相当耗时的操作 这就是为什么我想多次重复使用生成器 y FunctionWithYield for x in y print x here must be something t
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • VSCode:调试配置中的 Python 路径无效

    对 Python 和 VSCode 以及 stackoverflow 非常陌生 直到最近 我已经使用了大约 3 个月 一切都很好 当尝试在调试器中运行任何基本的 Python 程序时 弹出窗口The Python path in your
  • 用于运行可执行文件的python多线程进程

    我正在尝试将一个在 Windows 上运行可执行文件并管理文本输出文件的 python 脚本升级到使用多线程进程的版本 以便我可以利用多个核心 我有四个独立版本的可执行文件 每个线程都知道要访问它们 这部分工作正常 我遇到问题的地方是当它们
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像

随机推荐

  • is 和 = 有什么区别?

    我已将这些语句输入到序言解释器中 但对结果感到困惑 他们不应该返回同样的东西吗 真的 1 7 5 2 false 2 7 is 5 2 true 没有为什么 2并不意味着assign在 Prolog 中 而是unify 统一算法根本不知道算
  • 使用 Spring Web 服务客户端解密消息

    第350章 赏金和华夫饼给可以帮助我的人 我一直在挣扎Spring http en wikipedia org wiki Spring FrameworkWeb 服务加密好几天了 我不知道如何让 Spring 对消息正文的加密起作用 每当我
  • F# 惰性像素读取

    我想将图像像素延迟加载到 3 维整数数组中 例如 以简单的方式 它看起来像这样 for i 0 to Width for j 0 to Height let point image GetPixel i j pixels 0 i j lt
  • 如何实现从左侧滑动的侧边菜单?

    我是 Flutter 新手 刚刚完成入门教程 我想创建一个侧边菜单 当您滑动时它会从左侧出现 就像 Android 上的 Gmail 不幸的是 我在文档中找不到这样的布局 并且 flutter gallery 中的示例有点混乱 有人可以解释
  • 使用 C++ 将曲线重新采样为均匀长度的段

    使用 C 将曲线重新采样为均匀长度段的最佳方法是什么 我拥有的是代表二维曲线的一组点 在下面的示例中 我有一个带有 x 和 y 分量的点结构以及带有测试位置的点向量 每对点代表曲线上的一段 重采样曲线示例如下图所示 红色圆圈是原始位置 绿色
  • 递增并检查 XSLT 中的计数器变量

    我在分配计数器变量并递增它然后检查 XSLT 中的某个值方面没有什么困难 这是我的代码
  • 如何取消订阅应用程序的所有 Facebook 页面 Webhook

    我有一个 Facebook 应用程序 订阅了 20 000 多个页面 服务器无法处理来自所有这些 Facebook 页面的挂钩 我想从所有这些 Facebook 页面取消订阅我的应用程序 有没有更快的方法来做到这一点 我拥有的大部分页面访问
  • 从演示应用程序内部获取 Android 库模块版本号

    我可以通过编程方式获取我的应用程序的版本名称 例如this https stackoverflow com a 21119027 3681880 String versionName BuildConfig VERSION NAME 1 0
  • 将 MySQL 中的列从 int 更改为 double?

    基本上 我目前在MySQL表中有一个列 它是一个int 我想把它改成双倍 我在网上搜索过 但它提出的只是从列中获取值时进行转换 例如将某些日期转换为日期 但这不是我的意思 我猜这是 Alter Table 的问题 我在 MySQL 开发页面
  • RequestDispatcher.forward() 到“/WEB-INF”下的资源在 WebSphere 中不起作用

    在我的一个 servlet 中 我调用RequestDispatcher forward 调用 WEB INF 文件夹下某处的静态资源 request getRequestDispatcher WEB INF some path image
  • Twitter 的 Java/Grails 库:JTwitter、Twitter4J 或 Grails 插件?

    我正在寻求将一个新应用程序 将要构建 可能在 Grails 中 与 Twitter 集成 并发现 至少 有 3 个库可供使用 JTwitter http www winterwell com software jtwitter php 推特
  • C++根据条件初始化变量[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我目前正在尝试弄清楚如何根据条件初始化变量 这是我要修改的当前代码 int dimsOut 4 dimsOut 0 data gt nDat
  • 重写 ASP.NET MVC 3 RC 中的默认 EditorFor 模板选择

    我正在创建一个 MVC 应用程序 当前使用 EditorFor 生成大量视图 整个视图基本上只是一个 EditorForModel 而且效果很好 然而 我遇到了一个小问题 我似乎找不到解决方案 重要的是它按照我需要的方式工作 那就是在尝试渲
  • 在本机库中调试崩溃的最简单方法,由 Android 应用程序链接?

    我已将几个低级 C 库移植并创建到 Android 以便在我的应用程序中使用 我使用 NDK 交叉编译它们 然后使用 System loadLibrary 链接到它们 一段时间后 我的应用程序崩溃了 似乎是由于库中的错误 07 28 11
  • Swift:使用枚举在 CoreData 中存储状态

    我想在 CoreData 中存储托管对象的枚举状态 enum ObjStatus Int16 case State1 0 case State2 1 case State3 3 class StateFullManagedObject NS
  • Angular2 在 Component.js 中使用管道

    我正在学习 Angular2 我想格式化一个添加千位逗号分隔符的数字 据我所知 这可以使用 Pipes 来完成 问题是我想在 js 文件中以编程方式格式化数字 而不是在 html 中 就像 var number 一样 首先 我意识到没有可以
  • 如何将数据从活动传递到自定义适配器

    大家好 我需要将 arraylist 从活动传递到自定义适配器类 但使用我的代码它没有通过 我不知道为什么 我使用意图来传递数据 活动 private void azz int a 0 String status boolean statu
  • 排除 HttpModule 在 IIS7 上运行静态内容

    我的身份验证 HttpModule 有问题 问题是它显然会针对我在 Web 服务器 IIS7 上收到的每个请求运行 因为它也使用 Session 变量 所以它无法在 CSS JS 文件和类似文件上正常工作 我尝试使用
  • DispatchSemaphore 是 NSLock 的良好替代品吗?

    我一直在使用NSLock同步代码的敏感部分 但由于必须从锁定它们的同一线程中解锁它们而遇到了问题 然后我发现GCDDispatchSemaphores 似乎做同样的事情 并且可以从任何线程向它们发出信号 这增加了便利性 不过 我想知道这种便
  • pydot:是否可以绘制两个具有相同字符串的不同节点?

    我正在使用 pydot 在 python 中绘制图表 我想表示一个决策树 比如 a1 a2 a3 是属性 两个类是 0 和 1 a1 gt 3 a2 gt 10 a3 gt 7 1 0 1 0 然而 使用 pydot 只创建了两个叶子 树看