R中的Sankey图与networkD3 - 行号问题

问题描述 投票:5回答:1

sankey diagram

我想重点关注上面的流程,将蓝色'热量发电'模块连接到粉红色的'电网'块。你会注意到流量是526 TWh,这是来自Energy$links的第62行。

Energy$links
   source target   value
...
62     26     15 525.531
...

现在让我们关注sourcetarget值,这些值指的是Energy$nodes中的节点。

Energy$nodes
                             name
...
15        Heating and cooling - homes
16                   Electricity grid
...
26                       Gas reserves
27                 Thermal generation
...

source实际引用节点数据的行“27”时,它是'26'。当实际引用节点数据的行“16”时,目标值为“15”。为什么链接数据中的源和目标值实际上是指节点数据中的行x-1而不是x?除了在构建这些Sankey图时在我头脑中执行x - 1计算时,还有什么方法吗?

这是完整的Energy数据:

> Energy
$`nodes`
                                 name
1                Agricultural 'waste'
2                      Bio-conversion
3                              Liquid
4                              Losses
5                               Solid
6                                 Gas
7                     Biofuel imports
8                     Biomass imports
9                        Coal imports
10                               Coal
11                      Coal reserves
12                   District heating
13                           Industry
14   Heating and cooling - commercial
15        Heating and cooling - homes
16                   Electricity grid
17          Over generation / exports
18                      H2 conversion
19                     Road transport
20                        Agriculture
21                     Rail transport
22 Lighting & appliances - commercial
23      Lighting & appliances - homes
24                        Gas imports
25                               Ngas
26                       Gas reserves
27                 Thermal generation
28                         Geothermal
29                                 H2
30                              Hydro
31             International shipping
32                  Domestic aviation
33             International aviation
34                National navigation
35                       Marine algae
36                            Nuclear
37                        Oil imports
38                                Oil
39                       Oil reserves
40                        Other waste
41                        Pumped heat
42                           Solar PV
43                      Solar Thermal
44                              Solar
45                              Tidal
46            UK land based bioenergy
47                               Wave
48                               Wind

$links
   source target   value
1       0      1 124.729
2       1      2   0.597
3       1      3  26.862
4       1      4 280.322
5       1      5  81.144
6       6      2  35.000
7       7      4  35.000
8       8      9  11.606
9      10      9  63.965
10      9      4  75.571
11     11     12  10.639
12     11     13  22.505
13     11     14  46.184
14     15     16 104.453
15     15     14 113.726
16     15     17  27.140
17     15     12 342.165
18     15     18  37.797
19     15     19   4.412
20     15     13  40.858
21     15      3  56.691
22     15     20   7.863
23     15     21  90.008
24     15     22  93.494
25     23     24  40.719
26     25     24  82.233
27      5     13   0.129
28      5      3   1.401
29      5     26 151.891
30      5     19   2.096
31      5     12  48.580
32     27     15   7.013
33     17     28  20.897
34     17      3   6.242
35     28     18  20.897
36     29     15   6.995
37      2     12 121.066
38      2     30 128.690
39      2     18 135.835
40      2     31  14.458
41      2     32 206.267
42      2     19   3.640
43      2     33  33.218
44      2     20   4.413
45     34      1   4.375
46     24      5 122.952
47     35     26 839.978
48     36     37 504.287
49     38     37 107.703
50     37      2 611.990
51     39      4  56.587
52     39      1  77.810
53     40     14 193.026
54     40     13  70.672
55     41     15  59.901
56     42     14  19.263
57     43     42  19.263
58     43     41  59.901
59      4     19   0.882
60      4     26 400.120
61      4     12  46.477
62     26     15 525.531  # the highlighted 'flow'
63     26      3 787.129
64     26     11  79.329
65     44     15   9.452
66     45      1 182.010
67     46     15  19.013
68     47     15 289.366
r sankey-diagram htmlwidgets networkd3
1个回答
5
投票

原因是最终数据被发送到JavaScript / D3,它使用基于0的索引...这意味着vector / array / etc的第一个元素的索引。是0 ...不像在R中,矢量的第一个元素的索引是1


作为轻松转换R风格数据的一个例子......

source <- c("A", "A", "B", "C", "D", "D", "E", "E")
target <- c("D", "E", "E", "D", "H", "I", "I", "H")

nodes <- data.frame(name = unique(c(source, target)))

links <- data.frame(source = match(source, nodes$name) - 1,
                    target = match(target, nodes$name) - 1,
                    value = 1)

library(networkD3)
sankeyNetwork(links, nodes, "source", "target", "value", "name")

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.