首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用DiagrammeR绘制路径图

用DiagrammeR绘制路径图
EN

Stack Overflow用户
提问于 2015-03-23 10:58:05
回答 1查看 3.9K关注 0票数 4

我正在测试新的图表软件包的能力,以可视化结构方程模型。

我的目标是,得到这样的情节:

也许我需要找到一个关于如何指定边缘和节点的方向的重新源,因为--使用DiagrammeR --我现在只能做这样的一个图:

代码语言:javascript
复制
devtools::install_github('rich-iannone/DiagrammeR')
library('DiagrammeR')

#----------

test<-grViz("     
digraph CFA{

# latent variables
node [shape=circle]
latent_a [group='a']; 
latent_b [group='b'];

#regressions
latent_a -> latent_b [label='0.279'];

#measurement model for latent a
subgraph A{
node [shape=box]
ind_1; 
ind_2; 
ind_3; 
latent_a -> ind_1 [label='0.636'];
latent_a -> ind_2 [label='0.825'];
latent_a -> ind_3 [label='0.829'];
}

#measurement model for latent b
subgraph B{
node [shape=box]
ind_4 ; 
ind_5 ;
latent_b -> ind_4 [label='1.027'];
latent_b -> ind_5 [label='0.626'];
}

#residuals
node [shape=circle]
e1 ; 
e4 ;
e5 ;
e6 ;
e1 -> ind_1;
e4 -> ind_4;
e5 -> ind_5;
e6 -> latent_b;

#residual covariances
ind_1 -> ind_2 [dir=both];
}      
")
test

我会感谢任何暗示。

PS:也许我的DiagrammeR-Code看起来很有趣。我试着用同样的方式编写它,在lavaan中指定了一个模型。也许将来会有一种在这两个包之间进行转换的方法。我想这可能是可能的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-02 21:26:22

我想出了一些有点手动的东西,但我确信,通过适当的R函数生成DOT代码是可能的。以下是手动解决方案:

代码语言:javascript
复制
devtools::install_github("rich-iannone/DiagrammeR")
library(DiagrammeR)

grViz("
digraph SEM {

graph [layout = neato,
       overlap = true,
       outputorder = edgesfirst]

node [shape = rectangle]

a [pos = '-4,1!', label = 'e1', shape = circle]
b [pos = '-3,1!', label = 'ind_1']
c [pos = '-3,0!', label = 'ind_2']
d [pos = '-3,-1!', label = 'ind_3']
e [pos = '-1,0!', label = 'latent a', shape = ellipse]
f [pos = '1,0!', label = 'latent b', shape = ellipse]
g [pos = '1,1!', label = 'e6', shape = circle]
h [pos = '3,1!', label = 'ind_4']
i [pos = '3,-1!', label = 'ind_5']
j [pos = '4,1!', label = 'e4', shape = circle]
k [pos = '4,-1!', label = 'e5', shape = circle]

a->b
e->b [label = '0.6']
e->c [label = '0.6']
e->d [label = '0.6']

e->f [label = '0.321', headport = 'w']
g->f [tailport = 's', headport = 'n']

d->c [dir = both]

f->h [label = '0.6', tailport = 'ne', headport = 'w']
f->i [label = '0.6']

j->h
k->i

}
")
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29208525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档