web-dev-qa-db-ja.com

プロットサンキーダイアグラム:ノードのデフォルトの順序を変更する方法

plotlyパッケージを使用してサンキーダイアグラムを作成しました。

私が見る限り、ノードのデフォルトの順序は主に値によって定義されます。ただし、マウスの薬でノードを手動で移動せずにアルファベット順にしたい。

Rでデフォルトの順序を変更できますか?

どんな助けでも大歓迎です。以下は、サンプルコードと出力です。

node_label <- c("x1_1", "x1_2", "x2_1", "x2_2")
link_source <- c(0, 0, 1, 1)
link_target <- c(2, 3, 2, 3)
link_value <- c(2, 5, 1, 3)
# when link_value <- c(5, 2, 1, 3), the order is changed.

plotly::plot_ly(
  type = "sankey", 
  domain = list(x =  c(0,1), y =  c(0,1)), 
  node = list(label = node_label),
  link = list(
    source =  link_source,
    target = link_target,
    value =  link_value))

enter image description hereenter image description here

17
cuttlefish44

これは確認する価値があるかもしれませんが、私の場合(図がもう少し複雑な場合)に役立つことがわかりました。データラベルを整理するときに、表示したい順序でリストを整理してください。

たとえば、早い段階(左)に入る必要のあるノードがある場合は、残りのlabelList.insert(0, labelList.pop(labelList.index(first_node_label)))の前にノードをポップするだけです。

次に、labelListgoに接続すると、構造を(絶対的ではありませんが)ある程度制御できるはずです。

1
guyts