如何使用 haskell graphViz 绘制图表

2024-04-02

我计划使用 Haskell graphViz 绘制图表。我是 Haskell 的新手,所以这对我来说相当困难。有人可以给我看一个简单的例子吗?实际上我需要一个非常简单的示例,以便我可以理解它并在我正在处理的场景中使用它

我在尝试安装 Chart-cairo 时收到上述错误。我在网上看到了一些例子,它们都需要chart-cairo。知道如何解决吗?

*EDITED" The output that I get after executing the code given by https://stackoverflow.com/users/2827654/jamshidh https://stackoverflow.com/users/2827654/jamshidh enter image description here


(这解决了标题中描述的原始问题,并且不会涉及安装图表开罗或图表等的问题,这些问题实际上应该分解为不同的问题)......

graphviz 包在 Data.Graph.Inducing.Example 模块中包含一些示例图,可用于帮助您启动和运行。您可以在以下位置查看包含的图表列表:http://hackage.haskell.org/package/fgl-5.3/docs/Data-Graph-Inducing-Example.html http://hackage.haskell.org/package/fgl-5.3/docs/Data-Graph-Inductive-Example.html....我会用一个叫做clr479.

有了图表后,您可以使用以下命令将其转换为表示点格式的内部结构:graphToDot。请注意,您将需要提供一些参数,这些参数在http://hackage.haskell.org/package/graphviz-2999.11.0.0/docs/Data-GraphViz.html http://hackage.haskell.org/package/graphviz-2999.11.0.0/docs/Data-GraphViz.html。只是为了启动和运行,我将使用提供的nonClusteredParams.

let graphInDotFormat = graphToDot nonClusteredParams clr479 

然后,您需要将其转换为适合输入的文本dot程序。你可以这样做renderDot . toDot

let outputText = renderDot $ toDot graphInDotFormat

并且像往常一样,您需要将文本转换为字符串才能使用putStrLn(不要只使用show,因为它将包含引号和转义序列,其中dot不会明白)

putStrLn $ unpack outputText

将所有这些放在一起,最终程序 createDotFile.hs 将是

import Data.Text.Lazy
import Data.GraphViz
import Data.Graph.Inductive.Example
import Data.GraphViz.Printing

main = putStrLn $ unpack $ renderDot $ toDot $ graphToDot nonClusteredParams clr479 

编译使用ghc createDotFile.hs(请记住,如果您想对输出执行任何操作,请安装 cabal 所需的软件包以及 graphviz 本身)。在命令行上,您现在可以将该程序的输出通过管道传输到dot,这会将其转换为常用格式...例如,这里我转换为 svg

./createDotFile | dot -Tsvg > graph.svg

在我的 Linux 机器上可以通过输入来查看

eog graph.svg

Edit-

为了澄清,haskell 程序的输出需要作为 GraphViz 的输入提供。用于在 Windows 上安装 graphviz 的 msi 文件位于此处http://www.graphviz.org/Download_windows.php http://www.graphviz.org/Download_windows.php.

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

如何使用 haskell graphViz 绘制图表 的相关文章

  • 将两个 Int 值相除以获得 Float 的正确方法是什么?

    我想分两份IntHaskell 中的值并获得结果Float 我尝试这样做 foo Int gt Int gt Float foo a b fromRational a b 但 GHC 版本 6 12 1 告诉我 无法将预期类型 Intege
  • Flash 图表和图形的最佳解决方案是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我知道融合图表 http www fusioncharts com 还有其他好的解决方案或 API 用
  • 动态调整自定义刻度数

    Taking SO 的一个例子 https stackoverflow com a 7139485 97160 我想根据当前视图调整轴刻度 这是默认行为 除非设置自定义的刻度数 下图展示了由此产生的行为 左侧是默认行为 右侧是带有自定义刻度
  • 以下两个 lambda 函数的空间复杂度

    我正在阅读以下内容 https en wikibooks org wiki Haskell Graph reduction https en wikibooks org wiki Haskell Graph reduction 其内容如下
  • 在单个显示器中绘制多个 jpeg 图像

    我需要在单个组合显示器 或画布 中绘制和显示多个 jpeg 图像 例如 假设我有图像 a b c d jpg 每个图像的大小不同 我想将它们绘制在 2x2 网格的一页上 能够为每个子图设置标题也很好 我一直在彻底寻找解决方案 但不知道如何去
  • 如何在 Haskell 中安装库?

    我尝试使用控制 Monad Extra andM https hackage haskell org package extra 1 7 10 docs Control Monad Extra html import Control Mon
  • Haskell 中的中缀运算符优先级

    对于以下 Haskell 表达式 返回 a gt gt f 应该读作 返回a gt gt f or 返回 a gt gt f 这里的相关规则是什么 规则始终是函数应用程序的优先级高于任何运算符 因此 return a gt gt f 被解析
  • Matlab 一个图上有多个图例 2014b

    我想在一个地块上有多个传说 该解决方案在 2014b 版本之前完美运行 我试图弄清楚如何使用手柄优雅地制作它 但到目前为止还没有成功 欢迎任何想法 2013b 的示例 x 1 50 y1 sin x 2 y2 cos x 2 f figur
  • matplotlib 中的 R 风格数据轴缓冲区

    R 绘图自动设置 x 和 y 限制 以在数据和轴之间留出一些空间 我想知道 matplotlib 是否有办法自动执行相同的操作 如果没有 是否有一个好的公式或 经验法则 来说明 R 如何设置其轴限制 在 matplotlib 中 您可以通过
  • d3力定向布局-链接距离优先

    在 d3 中使用力导向布局 如何使链接距离成为优先事项 同时仍然保持良好的图形布局 如果我指定动态链接距离 但保留默认费用 则我的图形距离会因费用函数而发生一些变形 并且不再是准确的距离 但是 如果我删除电荷 图表将如下所示 任何建议表示赞
  • 如何让 graphviz 记录的单元格对齐

    我正在 graphviz 中使用记录节点来制作一个简单的表格 但它看起来错误 digraph g node shape record height 08 node1 label DBAT 0 1 2 3 4 5 6 7 8 9 10 11
  • Haskell / GHC - 是否有“警告不完整模式”的中缀标签/编译指示

    我正在寻找一个可以对特定的不完整模式发出警告的编译指示 它会使编译器失败并显示以下 假设的 代码 FAILIF incomplete patterns f Int gt Int f 0 0 我正在尝试使用 Arrows 编写一个 编译器 并
  • Haskell Stack 从 github 安装包依赖项

    是否可以使用 Haskell 堆栈从 github 安装软件包的版本 例如在一个 cabal or a stack yaml文件 如何在 git repo branch revision 上指向依赖项 对于堆栈 The 的文档stack y
  • 用于遇到 [...] 的 Haskell Parsec 解析器

    我正在尝试使用 Parsec 在 Haskell 中编写一个解析器 目前我有一个可以解析的程序 test x 1 2 3 end 执行此操作的代码如下 testParser do reserved test v lt identifier
  • Matplotlib loglog 的错误刻度/标签(双轴)

    我正在使用 matplotlib 创建对数图 如下图所示 默认刻度选择得很糟糕 充其量是这样 右边的 y 轴甚至根本没有 在线性等效中确实如此 而两个 x 轴都只有一个 有没有办法获得合理数量的带有标签的刻度 without为每个情节手动指
  • : 中缀运算符在 Haskell 中的作用是什么?

    我正在阅读Haskell 简要介绍 http www haskell org tutorial index html 这不是那么温和 并且它反复使用 操作符而不直接解释它的作用 那么 它到底有什么作用呢 是 前置 运算符 x xs 返回一个
  • 这个对自身单位的列表理解是如何工作的?

    在 haskell IRC 频道中有人问 是否有一种简洁的方法来定义一个列表 其中第 n 个条目是之前所有条目的平方和 我认为这听起来像一个有趣的谜题 递归定义无限列表是我真正需要练习的事情之一 所以我启动了 GHCi 并开始尝试递归定义
  • Haskell 输入返回元组

    我想知道 IO 函数是否可以返回元组 因为我想从这个函数中获取这些元组作为另一个函数的输入 investinput IO gt Char Int investinput do putStrLn Enter Username username
  • Pandas 堆积条形图中元素的排序

    我正在尝试绘制有关某个地区 5 个地区的家庭在特定行业赚取的收入比例的信息 我使用 groupby 按地区对数据框中的信息进行排序 df df orig groupby District Portion of income value co
  • 如何通过“cabal build”或“stack build”构建带有图标的项目

    我想构建一个带有图标的可执行文件 通过谷歌搜索 我发现这里的说明 https wiki haskell org Setting an executable icon 但它只能通过编译源文件来工作ghc 如果我想构建一个具有可执行文件的项目c

随机推荐

  • 如何在 Cypress 中点击 x 次

    我的网站上有一个对象列表 所有对象旁边都有 添加 按钮 单击第一个 添加 按钮时 将添加该对象 并且该行消失并被下一个对象取代 对象名称相同 在保存之前 我想 click 三次以添加列表中的前三个对象 我怎样才能做到这一点 我知道 clic
  • 带有页眉和页脚的 uiwebview

    我正在尝试添加页眉和页脚 它们都是UIViews 但由于某种原因我的页脚粘在底部 我正在使用KVO查看我的内容大小的方法 我在这里介绍我认为问题所在的方法 void updateLayout Update the frame of the
  • 如何在aws lambda中添加mecab库

    我正在尝试将 mecab 库添加到 aws lambda 层 但它不起作用 我想要的是标记日语和韩语 标记化就足够了 这就是我所做的 我参考了这个网站 https towardsdatascience com how to install
  • 使用字符串输入引用模型

    假设我希望创建一个可以使用 type string 和 id int 查询所需对象的页面 query type people id 1 会来接我 人物查找 1 whereas 查询 类型 城市 id 123 会来接我 城市查找 123 但是
  • MPI 是否提供预处理器宏?

    MPI 标准是否提供了预处理器宏 因此如果我的 C C 代码由支持 MPI 的编译器编译 它可以分支吗 就像是 OPENMPOpenMP 的宏 根据MPI标准 http www mpi forum org docs mpi 3 0 mpi3
  • 如何让 Mathematica 内核暂停以创建外部文件

    是否可以在计算期间暂停 Mathematica 内核 这是一个例子 Module Mathematica code Calls an external program with some argument Needs to wait for
  • C++ 从函数指针数组调用函数

    我使用存储在数组中的函数指针 并使用 typedef 定义指针 但我对如何调用该函数有点迷失 这是 Menu h 部分 typedef void Menu FunctionPointer FunctionPointer m funcPoin
  • 如何在本机 Android 应用程序开发中使用 OpenStreetMap [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 我的 Android 手机中有默认的 Android 虚拟内容 本机应用程序构建 现在我需要使用
  • Spark 中广播对象的最大大小是多少?

    使用数据框时播送 http spark apache org docs 2 0 0 api java org apache spark sql functions html broadcast org apache spark sql Da
  • 如何在vim的ex模式下从缓冲区粘贴?

    我在从文件复制某些文本然后将其复制到新的拆分窗口时遇到问题 3yy 新 p 在命令模式下它的工作 当我按下时 复制后分割窗口中的 p 它的工作 我理解您想要 拉出当前缓冲区中的当前行和下面的两行 在新的水平分割中打开一个空缓冲区并 将这三行
  • 使用“boot”包进行引导的 GPU 计算

    我想使用引导程序进行大型分析 我发现使用并行计算提高了引导速度 如以下代码所示 并行计算 detect number of cpu library parallel detectCores library boot boot functio
  • JavaFX 任务线程未终止

    我正在编写一个 JavaFX 应用程序 我的对象扩展了 Task 以提供远离 JavaFX GUI 线程的并发性 我的主要课程如下所示 public class MainApp extends Application Override pu
  • 将“MM/dd/yyyy HH:mm”形式的字符串转换为 Spark 数据帧中的 joda 日期时间

    我正在读取 csv 文件 其中一列中有一个应转换为日期时间的字符串 该字符串的形式为MM dd yyyy HH mm 但是 当我尝试使用 joda time 对其进行转换时 我总是收到错误 线程 main 中的异常 java lang Un
  • Kendo TreeView 搜索并突出显示

    我有一个带有 spriteclass 的 KendoTreeview 我想用我的搜索词突出显示节点 根节点和子节点 我已经实现了搜索功能 但是当我搜索它时 问题是突出显示节点中的术语 但在第一次搜索后缺少节点中的 SpriteClass 任
  • UITabBarItem 图标动画

    iPhone 版 Skype 应用程序使用动画 TabBar 图标 例如 在登录期间 最右侧的选项卡图标显示循环箭头 呼叫 呼叫 选项卡时 图标会轻轻闪烁 这显然是通过动画完成的 我想知道如何为选项卡栏项目的图标设置动画 在我的特殊情况下
  • 如何使用Abdera Atom客户端发送内容和附件

    我们正在使用Abdera https abdera apache org 与 IBM Connections API 交互 但我们的问题主要与 Abdera 本身有关 我认为 Abdera 中存在一个错误 不允许您在单个请求中发送包含内容和
  • VScode 的扩展,用于查找 Nodejs 应用程序中未使用的公共函数

    我需要 VScode 扩展来查找 Nodejs 应用程序中未使用的公共函数 答案已被接受 如果有人正在寻找更详细的步骤 请阅读以下内容 STEP 1 添加这个ESLint https marketplace visualstudio com
  • 安全地使用 PHP exec 函数

    我正在编写一个 PHP 脚本 旨在通过 exec 函数运行可执行文件 ffmpeg exe 问题是我已经读到使用 exec 函数可能存在安全风险 应该尽可能避免 我一直在研究如何安全地运行 exec 函数 唯一遇到的问题是使用 escape
  • 在docker容器内运行pulseaudio来录制系统音频

    我正在尝试使用 Selenium 设置一个 Docker 容器 该容器使用 ffmpeg 录制带有系统音频的浏览器 我使用 Xvfb 处理视频 不幸的是 在音频方面 这似乎更加棘手 我想我应该在容器内设置一个虚拟的脉冲音频接收器 这将允许我
  • 如何使用 haskell graphViz 绘制图表

    我计划使用 Haskell graphViz 绘制图表 我是 Haskell 的新手 所以这对我来说相当困难 有人可以给我看一个简单的例子吗 实际上我需要一个非常简单的示例 以便我可以理解它并在我正在处理的场景中使用它 我在尝试安装 Cha