FIT FOR DOT NET(4)

博客介绍了Fixture内幕,包括其对表的操作及标记规则,如绿色表示匹配、红色表示不匹配等。还提及Fixture查找的关键词,如空格、“Blank”“error”等。重点介绍了ColumnFixture,它是简单且有用的编程fixture,每列映射对象或方法,用C#编写。
 

 Fixture内幕

  你的fixture对表可以做任何他们想做的,包括增加行和单元格(参看TechnicalReference ,查找如何进行),但是大多数fixture仅仅标志单元格为对和错.这里由一些标记的规则:

  • 绿色 Fixture比较单元格和软件,他们匹配
  •  (包括 "expected" 和 "actual" 部分): Fixture比较单元格和软件,他们不匹配
  • 黄色: fixture有错误
  • 灰色文本 在白底: 单元格是空,因此fixture显示自己的答案
  • 黑色文本 灰底: fixture忽略单元格

这里有Fixture在表中查找的一些关键词:

  • 一个完全的空格(Blank cell):Fixture试着在里面填充答案(它将给单元格着上面描述的灰白颜色)
  •  单词"Blank":Fixture把它翻译为一个空字符串.(它这样做是因为一个实际是空的单元格意味者"给我一个答案",如前面提到一样)
  • 单词"error": Fixture期望一个错误.如果错误发生,单元格将标着绿色,不是正常的黄色.

这些跟随你可以达到你自己目的的fixture.他们描述如下.简单的说,他们是:

ColumnFixture

ColumnFixture 是最简单的一种编程fixture,也是最有用的一种,你应该经常使用ColumnFixture

一个ColumnFixture 是为表格里的单行所表达的例子的.一个表可以包含多个实例,一行一个,见下面:

 

为什么称之为"column"fixture呢?因为表中的每列映射你的fixture里的一个对象或者方法.FIT使用第二行列头实现映射.

当一个列头以括号结尾,fixture调用一个方法,而不是设置一个变量.fixture看看从方法返回的值,然后把它和表里面的值比较,然后根据情况着红色获绿色.

结果,所有这些使你写自己的ColumnFixture几乎是微不足道的.下图描述了上面用C#编写的Fixture:

 

ColumnFixtures从左到右,从上到下处理.根据上面的2个图,它好像是你和客户已经写了类似如下的代码:

 // Row 1
 StandardHours = 40;			     // the StandardHours column
 HolidayHours = 0;			     // the HolidayHours column
 Wage = new Currency("20");		     // the Wage column
 CompareResults(new Currency($800), Pay());  // the Pay() column

// Row 2 StandardHours = 45; HolidayHours = 0; Wage = new Currency("20"); CompareResults(new Currency($950), Pay());

// etc...

注意变量在行之间没有清除.


(work still in progress)


<think>我们遇到了在R中使用bnlearn包时,调用graphviz.plot函数报错的问题,错误信息为:“不存在叫‘graphviz’这个名称的程序包”或“thisfunction requiresthe graphviz package”。实际上,这个错误是因为graphviz.plot函数依赖于Graphviz软件(一个独立的图形可视化工具),而不是R中的graphviz包。因此,我们需要安装Graphviz软件并配置系统环境。根据引用[1]中的方法,我们可以通过以下步骤解决:步骤1:下载并安装Graphviz软件前往Graphviz官网(https://graphviz.org/download/)下载适合你操作系统的安装程序。对于Windows用户,建议下载.msi安装文件。步骤2:安装时注意勾选“Add Graphviz tothe systemPATH forall users”(添加到系统环境变量),这样R就能找到Graphviz的可执行文件。步骤3:如果在安装过程中没有勾选添加到PATH,或者安装后R仍然找不到Graphviz,我们可以手动将Graphviz的bin目录添加到系统环境变量PATH中。例如,如果Graphviz安装在"D:\Software_install\graphviz-2.46.1\Graphviz\bin",则将此路径添加到PATH。步骤4:在R中,我们也可以临时添加环境变量(但推荐系统级配置): ```r#在R中添加Graphviz的bin目录到PATH(替换为你的实际路径)Sys.setenv(PATH =paste(Sys.getenv("PATH"),"D:/Software_install/graphviz-2.46.1/Graphviz/bin", sep= .Platform$path.sep))```步骤5:验证安装是否成功。在R中运行: ```r#检查dot命令是否可用Sys.which("dot")#应该返回dot可执行文件的路径,而不是空字符串```步骤6:重新运行graphviz.plot函数。如果仍然报错,尝试重启R或计算机,使环境变量生效。另外,引用[2]提到了网络超时问题,这通常发生在使用pip安装时,但这里我们不需要在R中安装graphviz包,所以可以忽略。引用[3]展示了在Windows下使用命令行编译安装其他软件(如Gazebo)的示例,但Graphviz的安装不需要编译,直接使用安装程序即可。注意:在R中,我们不需要安装graphviz包(R包graphviz是另一个包,用于Python接口),我们只需要系统安装Graphviz软件。因此,总结解决方案:1.下载并安装Graphviz软件,确保安装时选择添加到PATH。2.在R中验证Sys.which("dot")返回正确的路径。3.如果使用R临时添加路径,确保路径正确。如果上述步骤完成后,graphviz.plot仍然报错,可以尝试使用qgraph包来可视化贝叶斯网络(如你之前代码中所示),但这不会使用Graphviz的布局。最后,关于你之前代码中出现的另一个错误(node.col参数无效),这是因为graphviz.plot函数中并没有node.col参数。正确的参数是highlight,用于设置高亮显示的节点。例如:```r#错误:graphviz.plot(..., node.col ="red")#正确:使用highlight参数graphviz.plot(avg_bn,highlight =list(nodes =nodes(avg_bn),col= "red",fill ="lightblue"))```因此,我们修正代码:```r#假设avg_bn是我们的平均网络#首先确保已经正确安装了Graphviz并且Sys.which("dot")返回了路径#然后绘制graphviz.plot(avg_bn,layout ="dot",shape= "ellipse",main= "T1贝叶斯网络结构",highlight =list(nodes =nodes(avg_bn),col ="black", fill= "lightblue")) ```如果中文显示有问题,可以设置字体:```rgraphviz.plot(avg_bn,layout= "dot",shape ="ellipse",main ="T1贝叶斯网络结构",highlight= list(nodes= nodes(avg_bn), col= "black",fill ="lightblue"),graph= list(fontname ="MicrosoftYaHei"))#使用微软雅黑字体,适用于Windows```这样应该可以解决问题。下面,我将根据上述步骤,给出在R中解决该问题的完整代码示例(包括安装Graphviz后的验证和绘图):</think>### 解决 R 中 bnlearn 包依赖的 Graphviz 缺失错误 要解决 `bnlearn` 包依赖 Graphviz 程序缺失导致的错误,请按照以下步骤操作: #### 步骤 1:安装 Graphviz 软件(系统级安装) 1. **下载安装包**: - 前往 [Graphviz 官网](https://graphviz.org/download/) - 选择对应操作系统的安装包: - Windows:下载 `.msi` 安装文件 - macOS:使用 `brew install graphviz` - Linux:`sudo apt install graphviz` (Ubuntu) 或 `sudo yum install graphviz` (CentOS) 2. **Windows 安装注意事项**: ```bash # 安装时必须勾选此选项 [x] Add Graphviz to the system PATH for all users ``` - 默认安装路径:`C:\Program Files\Graphviz\bin` #### 步骤 2:配置系统环境变量 1. **Windows 手动配置**: ```r # 在 R 中临时添加路径 Sys.setenv(PATH = paste(Sys.getenv("PATH"), "C:\\Program Files\\Graphviz\\bin", sep = ";")) # 永久配置(推荐): # 1. 右键"此电脑" → 属性 → 高级系统设置 → 环境变量 # 2. 系统变量 Path → 编辑 → 添加: C:\Program Files\Graphviz\bin ``` 2. **验证安装**: ```r # 在 R 中检查 dot 命令路径 Sys.which("dot") # 应返回: "C:\\Program Files\\Graphviz\\bin\\dot.exe" ``` #### 步骤 3:解决 R 代码中的问题 1. **修正参数错误**: ```r # 错误用法(node.col 参数无效) # graphviz.plot(..., node.col = "red") # 正确用法 - 使用 highlight 参数 graphviz.plot( avg_bn, highlight = list( nodes = nodes(avg_bn), # 所有节点 col = "black", # 边框颜色 fill = "lightblue" # 填充颜色 ) ) ``` 2. **中文显示支持**: ```r graphviz.plot( avg_bn, graph = list(fontname = "Microsoft YaHei"), # Windows 中文字体 main = "T1 贝叶斯网络结构" ) ``` #### 步骤 4:备选可视化方案 如果仍无法解决,使用 `qgraph` 作为替代: ```r # 获取邻接矩阵 adj <- amat(avg_bn) # 使用 qgraph 可视化 qgraph( adj, directed = TRUE, labels = colnames(adj), layout = "spring", title = "贝叶斯网络结构", edge.color = "darkblue", node.width = 1.2 ) ``` #### 验证安装的完整示例 ```r library(bnlearn) # 测试数据集 data(learning.test) # 学习网络结构 bn_model <- hc(learning.test) fitted_bn <- bn.fit(bn_model, learning.test) # 验证 Graphviz 安装 if (nchar(Sys.which("dot")) > 0) { graphviz.plot( fitted_bn, main = "Graphviz 安装验证", highlight = list(nodes = c("A", "B"), fill = "yellow") ) } else { warning("Graphviz not found! Using qgraph instead") adj <- amat(bn_model) qgraph(adj, directed = TRUE) } ``` ### 常见问题排查 1. **安装后仍报错**: - 重启 R/RStudio(环境变量更新需要重启) - 检查 `Sys.which("dot")` 是否返回有效路径 - 重装 Graphviz 并确认勾选 PATH 选项 2. **网络超时问题**(如引用[2]): ```r # 设置 R 的超时时间 options(timeout = 600) # 10分钟超时 ``` > **关键点**:Graphviz 是独立软件,不是 R 包。90% 的安装问题源于未正确配置系统 PATH[^1]。安装后务必通过 `Sys.which("dot")` 验证路径是否被 R 识别。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值