1

CIRCOS Im と同様に、R で円形プロットを作成する方法を学んでいます。パッケージ circlize を使用して、フライトが OB、インバウンド、リターンのいずれであったかに基づいて、出発地と目的地のペア間のリンクを描画します。データのロジックは重要ではなく、おもちゃの例にすぎません

私は、次のロジックに基づいて動作する以下のコードに基づいてプロットを動作させました

  1. 私のデータを取得し、目的地の列とフライトの種類を組み合わせます
  2. 行列に変換し、原点と新しい列を circlize にフィードします

参照

library(dplyr)
library(circlize)

# Create Fake Flight Information in a table
orig = c("IE","GB","US","ES","FI","US","IE","IE","GB")
dest = c("FI","FI","ES","ES","US","US","FI","US","IE")
direc = c("IB","OB","RETURN","DOM","OB","DOM","IB","RETURN","IB")
mydf = data.frame(orig, dest, direc)

# Add a column that combines the dest and direction together
mydf <- mydf %>%
  mutate(key = paste(dest,direc)) %>%
  select (orig, key)

# Create a Binary Matrix Based on mydf
mymat <- data.matrix(as.data.frame.matrix(table(mydf)))

# create the objects you want to link from to in your diagram
from <- rownames(mymat)
to <- colnames(mymat)

# Create Diagram by suppling the matrix 
par(mar = c(1, 1, 1, 1))
chordDiagram(mymat, order = sort(union(from, to)), directional = TRUE)
circos.clear()

プロットはとても気に入っていますが、少し変更したいと思います。たとえば、FI (フィンランド) には、ダイアグラム FI IB、FI OB、および FI に 3 つの測定値があります。可能であれば、FI の下でそれらをすべて組み合わせて、配色、矢印、または IB OB と RETURN フライトの傘として機能する追加のトラックを追加して、3 つのタイプのフライトを区別したいと考えています。

たとえば、

  • FI OB は FI に配置されますが、OB を示すために GB への一方向矢印があります。
  • FI IB は FI に配置されますが、FI への一方向矢印があります
  • FI RETURN (存在する場合) には、両方向矢印が表示されます。

誰か助けてくれませんか? 最終結果には、プロットに国が一度だけ含まれている必要があります。これにより、誰かがどの国が最も多くのフライトを持っているかを非常に迅速に確認できるようになります

他の投稿をフォローしようとしましたが、より高度なものに移動すると迷子になるのではないかと心配しています

お時間をいただきありがとうございました

4

2 に答える 2

1

グラフの色分けが既に From / To のストーリーを伝えているため、矢印が必要ですか (FROM -> color edge FROM COUNTRY, TO は TO COUNTRY に到着する FROM COUNTRY の色です, IF FROM == TO それ自身の色独自の拠点に戻ります (たとえば、US または ES を参照してください))。

library(dplyr)
library(circlize)

# Create Fake Flight Information in a table
orig = c("IE","GB","US","ES","FI","US","IE","IE","GB")
dest = c("FI","FI","ES","ES","US","US","FI","US","IE")
mydf = data.frame(orig, dest)

# Create a Binary Matrix Based on mydf
mymat <- data.matrix(as.data.frame.matrix(table(mydf)))

# create the objects you want to link from to in your diagram
from <- rownames(mymat)
to <- colnames(mymat)

# Create Diagram by suppling the matrix 
par(mar = c(1, 1, 1, 1))
chordDiagram(mymat, order = sort(union(from, to)), directional = TRUE)
circos.clear()

ところで -> エッジには、FROM (広いエッジ) か TO (小さいエッジ) かを示す OFFSET の違いもあります。

于 2015-08-11T14:06:11.777 に答える