0

我正在努力使用包“riverplot”创建一个桑基图。我没有设法创建一个最小的玩具示例,所以我必须包括makeRiver()这里创建的河图对象。makeRiver没有抛出任何错误,所以我认为它会起作用,但事实并非如此。我希望你们中的任何人都有一个想法。

这是我要绘制的河图对象:

$edges
     ID N1 N2 Value
102 102  2 10     3
106 106  6 10     2
111 111  2 11     7
115 115  6 11     2
119 119  1 12     1
120 120  2 12    72
121 121  3 12     4
125 125  7 12     7
127 127  9 12     4
129 129  2 13    14
134 134  7 13     2
136 136  9 13     1
145 145  9 14     1
147 147  2 15     4
152 152  7 15     1
154 154  9 15     1
156 156  2 16     1
165 165  2 17    69
166 166  3 17     3
167 167  4 17     1
168 168  5 17     1
169 169  6 17     2
170 170  7 17     7
171 171  8 17     1
172 172  9 17     8

$nodes
   ID                        labels x
1   1                     Albanisch 1
2   2                      Arabisch 1
3   3             Arabisch;Englisch 1
4   4             Arabisch;Türkisch 1
5   5    Englisch;Kurdisch;Arabisch 1
6   6                      Kurdisch 1
7   7             Kurdisch;Arabisch 1
8   8              Syrisch;Arabisch 1
9   9                         keine 1
10 10                      Arabisch 2
11 11             Arabisch;Englisch 2
12 12                      Englisch 2
13 13          Englisch;Französisch 2
14 14 Englisch;Französisch;Arabisch 2
15 15                   Französisch 2
16 16          Französisch;Englisch 2
17 17                         keine 2

$styles
list()

attr(,"class")
[1] "list"      "riverplot"

调用riverplot(river)(“river”是我保存对象的变量的名称),我得到以下输出(对不起,错误消息是德语,它说“Index(ing) out of bounds”):

[1] "calculating positions"
[1] 21.9
   ID                        labels x
1   1                     Albanisch 1
2   2                      Arabisch 1
3   3             Arabisch;Englisch 1
4   4             Arabisch;Türkisch 1
5   5    Englisch;Kurdisch;Arabisch 1
6   6                      Kurdisch 1
7   7             Kurdisch;Arabisch 1
8   8              Syrisch;Arabisch 1
9   9                         keine 1
10 10                      Arabisch 2
11 11             Arabisch;Englisch 2
12 12                      Englisch 2
13 13          Englisch;Französisch 2
14 14 Englisch;Französisch;Arabisch 2
15 15                   Französisch 2
16 16          Französisch;Englisch 2
17 17                         keine 2
[1] "done"
[1] "drawing edges"
Fehler in styles[[id]] : Indizierung außerhalb der Grenzen

我认为我将问题追溯到功能riverplot:::getattr,但我不确定。有什么帮助吗?

4

1 回答 1

0

如果有人对我上面描述的问题的解决方案感兴趣:我对节点(1、2、3、...)和边(101、102、...)使用数字 ID。

makeRiver()检查节点和边之间的 ID 是否重复,如果发生这种情况则抛出错误。但是,它不会检查 ID 是否为纯数字,这显然是错误的根源。

我现在在边缘 ID(E1、E2、...)的开头添加了一个“E”,在节点 ID(N1、N2、...)的开头添加了一个“N”。现在可以了!

于 2017-06-20T06:56:06.633 回答