RでRiverplotを描く方法

統計

こんにちは、eURO2023です!

趣味(?)でRstudioをしています。

Riverplotなるものを描いてみたので、備忘録としてあげておきます。

Warning

私は統計については我流で学んでいます。

R、Rstudioについても我流です。

その点はご承知おきいただき、「統計素人がなんとなく統計やってみた」という目で観ていただければ幸いです。

質問、批評大歓迎です。

下準備

# まず今回使用するパッケージをインストールしましょう!

# libraryで呼び出し


# RColorBrewerを呼び出して、どの色合いがよいか決めます

すると こんなパレットが書き出されるので、この中から好きな組み合わせを選びます。

“Spectral”というパレットにしてみました。

# 使用するパレットの決定

“Spectral”には色が11種類あります。10と設定すると、真ん中の色が抜けるのかな?

colA[1]は一番左側の色、colA[2]は左から2番目の色…

という風に認識されるようです。 

枠組みの作成

とりあえず、テーマを化学療法の推移、にしてみます。

まず、ざっくりと絵を描いてみましょう。

Riverplotを描く場合、この手書きの絵がカギになるのではと思います。

x軸と、それぞれのx軸において使用された化学療法をまず描きます。

x=1は1次化学療法、x=2は2次化学療法…という感じで、4次化学療法まで設定します。

化学療法は”A”、”B”、”C”、”D”という4種類を設定します。

一次化学療法でAを行った場合は”A1″になります。3次化学療法でDを行った場合は”D3″ですね。

残念ながら死亡された場合は、”E”に組み込みます。

そして、ここが少し複雑なのですが、みんなが4次化学療法まで進むわけではないですよね。

1次化学療法をずっと続けている方もいるし、2次化学療法を続けている方もいるはず。

その場合のカテゴリー、「前回と同じ」も作成します。”F”としましょう。

上の図の意味

  • 一次化学療法は”A”と”D”が用いられた(A1, D1)。
  • “二次化学療法”は”A”, “B”, “C”が用いられた(A2, B2, C2)。残念ながら一次化学療法までで亡くなられた方が”E2″、一次化学療法をそのまま継続されて今に至る方が”F2″に入る。
  • “三次化学療法”は”B”が用いられた(B3)。残念ながら二次化学療法までで亡くなられた方が”E3″、二次化学療法をそのまま継続されて今に至る方が”F3″に入る。
  • “四次化学療法”は”A”と”D”が用いられた(A4, D4)。残念ながら三次化学療法までで亡くなられた方が”E4″、三次化学療法をそのまま継続されて今に至る方が”F4″に入る。
  • “五次化学療法”までされた方はおらず、四次化学療法までで亡くなられた方が”E5″、四次化学療法をそのまま継続されて今に至る方が”F5″に入る。

次に色を決めます。同じ化学療法は同じ色にしましょう。

ここでは、”A”はcolA[2]、”B”はcolA[3]、”C”はcolA[4]、”D”はcolA[5]と設定します。

“E”は勝手なイメージですが濃い紫のcolA[10]にしました。

また、”F”については”white”と設定します。この理由は最後にわかります。

# nodesの設定

点と点の推移を描く

次からがちょっと煩雑になってきます。

化学療法を施行された20人の患者さんの推移を追うことにしましょう。

“A”という化学療法が、一次化学療法として15人に施行されたとします。

そして”D”という化学療法は、一次化学療法として5人に施行されました。

合わせて20人ですね。

この15人、5人が次のフェーズでどのようになったかを記載する必要があります。

上の図の意味

  • “A”の15名のうち、次治療として”B”が10人に、”C”が3人に施行されたとします。
  • また、1名は残念ながらAの治療中の亡くなられ、1名は”A”を継続中とします。
  • つまり”A1″から、“B2″に10人“C2″に3人“E2″に1人“F2″に1人と移動することになりました。
  • また、一次化学療法で”D”が5人に施行され、1人は亡くなられ、4人は次治療として”A”が選択されたとします。
  • “D1″から“A2″に4人“E2″に1人移動することになります。

ここで、”A1″からは4本の手が伸びており、”D1″からは2本の手が伸びていることがわかりますよね。

この、「手」の部分は

と表現します。N1が始点、ということになります。

さらに、”A1″からは”B2″,”C2″,”E2″,”F2″へ手が伸びており、”D1″からは”A2″,”E2″へ手が伸びてます。

ここは

と表現します。N2は終点ですね。

次に移動した数を表現します。

と表現することで、A1→B2へ10の移動、A1→C2へ3の移動、…と表すことができます!

この推移を最後まで完成させると、以下の図のようになります!

最終的には以下のスクリプトになります。

Riverplotの書き出し

いよいよLiverplotの書き出しです。


# 図の書き出し

A1、とかD1、とか文字が邪魔ですよね…

実は、ラベルの消去を行うことができます

ラベルは16個あったので、””,が16個あればOKですね。

“”の中になにもいれないことで、空白にすることができるようです。

他に文字を入れたいときは、その文字を入力すればよさそうですね!

# 図の書き出し

最終的に、このようになりました!

Rstudioを使うと、きれいな図が描けますね。

治療継続中のヒトを”white”にすることで、(白背景に限りますが)うっすら消えていくように見えます。

色の設定を変えることで、工夫ができそうですね。

さいごに

# スクリプト全景

参考にしたブログ・HP

  1. シンペのアイロニカルデスク(https://shimpei.fun/?p=974)
  2. バイオインフォ道場 [bioinfo-Dojo] (https://bioinfo-dojo.net/2017/08/18/r-rcolorbrewer_alpha/)

イラスト・画像元

コメント

タイトルとURLをコピーしました