理系夫婦のうたたねブログ

理系夫婦が好きなことを書いていきます。たまに医学っぽいことを書いていますが、あくまで私見です。

ggpubrで箱ヒゲ図、バイオリンプロット

はじめに

ggpubrで箱ヒゲ図とバイオリンプロットを書いてみます。 私としては箱ひげ図の方が好きです。バイオリンプロットはなんとなく、KDEでの推定があっているのかわからない時があって、誤解を与えそうな気がするからです。

データの紹介

今回使うのはToothGrowth というデータセットです。 モルモットにビタミンCを投与した際の歯の長さについてのデータセットだそうです。 投与方法が2つあって、オレンジジュースとして投与したデータと、精製したアスコルビン酸で投与したデータがありますが、今回はまとめて表示しています。

処理と結果

箱ヒゲ図

まずは何も考えずに箱ヒゲ図を作ってみます。

data("ToothGrowth")
df <- ToothGrowth
ggboxplot(df, x = "dose", y = "len", width = 0.8)

簡単に箱ヒゲ図

これだけだと、味気ないのと、データ点を全て出した方が誠実だと思われるので、その様にしてみます。 doseごとに色を変えるためにcolor = dose データ点を出すためにadd = jitter とすると

ggboxplot(df, "dose", "len",
          color = "dose", palette =c("blue", "red", "magenta"),
          add = "jitter", shape = "dose")

色を変えたプロット

となります。

塗りつぶしたい時はcolor = doseではなくfill = doseにすればよく

ggboxplot(df, "dose", "len",
          fill = "dose", palette ="Blues",
          add = "jitter", shape = "dose")

塗りつぶし

となります。こちらの方が良いかもしれません。

さらに、調整を行ってみます。

p<-ggboxplot(df, x = "dose", y = "len",
         add = "dotplot",
         add.params = list(size = 0.5, fill = "white"),
         fill = "dose",
         palette = "Blues") + theme(aspect.ratio = 1.3)
ggpar(p,
      xlab = "Dose", 
      ylab = "Tooth length",
      font.main = c(18),
      font.x = c(18, "bold"),
      font.y = c(18, "bold"),
      font.tickslab = c(14,"bold"),
      legend = "right",
      legend.title = "Condition")

ちょっと調整したグラフ

ここでは、Boxplotにaddでドットプロット (各データ点を白丸で付け加える) を追加しています。ドットプロットの調整はadd.paramsで行っており、丸の大きさと塗りつぶしの色を変更しています。

さらに+theme(aspect.ratio = 1.3) でいい感じの縦横比になるように調整を行っています。

ggparでは軸ラベルを調整しています。こないだの記事の通りです。

med-ruka.hatenablog.com

バイオリンプロット

上記のグラフは全て、ggboxplotをggviolinにすればバイオリンプロットに変更可能です。

p<-ggviolin(df, x = "dose", y = "len",
             add = "dotplot",
             add.params = list(size = 0.5, fill = "white"),
             fill = "dose",
             palette = "Blues") + theme(aspect.ratio = 1.3)
ggpar(p,
      xlab = "Dose", 
      ylab = "Tooth length",
      font.main = c(18),
      font.x = c(18, "bold"),
      font.y = c(18, "bold"),
      font.tickslab = c(14,"bold"),
      legend = "right",
      legend.title = "Condition")

バイオリンプロット
やっぱり私は箱ひげのほうが好みですが。

 感想

やっぱりggpubrは簡単でいいですね。 しばらくは使ってみようかと思います。ただ、ライブラリにないグラフは結局ggplot2を使う気がするので、ggplot2に習熟する方が楽??
あと、p-valueとかつける方法もあるみたいですが、個人的にはイラレでつける方が結局楽かなと思います。
なのでフローとしては
ミニマルな図をRで作成 → イラレで装飾をたす
みたいな感じですね今のところ。

ggpubrでのグラフの整え方

ggpubrで作成されるグラフの整え方を少し紹介します。

はじめに

ggpubrでデフォルトで出てくるグラフはある程度整ってはいますが、自分好みに整えるのが必要な部分もあります。 昨日のggpairedを題材に、少しいじってみます。

データの紹介

使うデータとコードは昨日の記事と同じです。

med-ruka.hatenablog.com

sleep dataを用いて少しやってみます。

処理と結果

# ライブラリのインポートとデータ取得
library(ggpubr)
data(sleep)
# 簡単なプロット
ggpaired(data = sleep, x = "group", y = "extra")

簡単なプロット

ggpairedにはいくつかの引数があり、指定することで見た目を変えることができます。 前回は色を変えたりしていましたが、それ以外にbox plotの幅を変えたり (width)、対応するサンプル間に引く線の太さ (line.size) を変えられます。

ggpaired(data = sleep,
         x = "group",
         y = "extra",
         width = 0.8,
         line.size = 0.1,
         )

幅と線を変更

一方で軸ラベルの字の大きさや、グラフタイトルの追加にはggparを用います。 使い方は、

p <- ggpaired(data = sleep,
              x = "group",
              y = "extra",
              width = 0.5,
              line.size = 0.5,
              linetype = "dashed")
ggpar(p,
      main = "Effects of drugs on sleep amount",
      xlab = "Group", 
      ylab = "Sleep amount",
      font.main = c(24,"bold.italic", "blue"),
      font.x = c(16, "bold"),
      font.y = c(16, "bold"))

のようにするみたいです。 これで以下のように、軸ラベルなどをいじったグラフが出せます。 font.mainなどのc() の中身は font size, font type, font colorになっています。

ラベルなどを変更したグラフ

p<- ggpaired(d,
             cond1 = "drug1",
             cond2 = "drug2",
             fill = "condition",
             line.color = "gray",
             palette = "Blues")
ggpar(p,
      xlab = "Group", 
      ylab = "Sleep amount",
      font.main = c(18),
      font.x = c(18, "bold"),
      font.y = c(18, "bold"),
      font.tickslab = c(14,"bold"),
      legend = "right",
      legend.title = "Condition")

Conditionの情報が冗長ですが、こんな感じで整えていくことが可能です。

ちょっと整えたグラフ

感想

ggpubrは簡単にグラフを作るのには便利だなーと思います。 同僚に説明したりする程度であればこのくらいのグラフでも全く問題ない気がしますし。 論文に となるとまたちょっと変わる気もしますが、もうちょっと修行したらもっとよくかけるかもしれません。 R はフリーなのが大変助かるところで、これからさらに慣れていきたいところです。

ggpubrで対応のあるデータのプロット

はじめに

最近少しRを使うようになりました。

これまでIgor ProかPythonを使ってグラフを描いていたのですが、Igorは有料、PythonのMatplotlibは使い勝手がイマイチということで、晴れてRデビューです。

ちょっと調べるとRにはggplot2というのがあり、こちらで綺麗にグラフが書けるということでしたが、面倒くさがりな私にはもっとお似合いのggpubrというのがありました。

rpkgs.datanovia.com

ggpubrはggplot2ベースの、簡単にPublication qualityのグラフが作れるモジュールのようです。試しに対応のあるデータで遊んでみました。

データの紹介

データはRに組み込みのサンプルデータでやってみます。今回使うのは

sleep

というデータです。

stat.ethz.ch

こちらは2種類の睡眠薬を投与した時のベースラインからの睡眠量の変化を記録したデータセットになっています。

データの中身 Extra: ベースラインからの睡眠量の変化

Group: 薬剤の種類 (変数名が紛らわしいと指摘されている) 

ID: 生徒のID

データの中身

となっています。

IDが重複していることから分かる通り、こちらは対応のあるデータになっています。

これを図示してみます。

処理と結果

# 初回利用時はインストールのために以下も実行
# install.packages("ggpubr")

library(ggpubr)
data(sleep)

sleep データそのままだとggpubrのggpairが使いにくいので (後述しますが嘘です) 、各グループ1列のデータに変更します。

d <- data.frame(drug1 = sleep$extra[sleep$group==1], drug2 = sleep$extra[sleep$group==2])

データの形変えた後

これで前準備完了です。 プロットのためには、以下です。

ggpaired(d, cond1 = "drug1", cond2 = "drug2") 

最初の引数でデータフレームを指定して、cond1, cond2でグループを指定します。 これで以下のようなグラフが作れます。

簡素なプロット

色をつけたければ、

ggpaired(d,
         cond1 = "drug1",
         cond2 = "drug2",
         color = "condition",
         line.color = "gray",
         palette = "jco")

色をつけたグラフ

colorで箱ヒゲ図の色を変えられます。paletteは以下参照ですが、nature とか Lancetとかやるとそれぞれのジャーナルっぽい色使いのグラフが作れます。

cran.r-project.org

さらに、塗り潰しがしたければcolorのところをfillにすると

ggpaired(d,
         cond1 = "drug1",
         cond2 = "drug2",
         fill = "condition",
         line.color = "gray",
         palette = "jco")

塗り潰し

というような感じ

ちなみに、ドキュメント読んで気づいたけど、別に前処理しなくても以下でも最初の簡素なグラフと同じグラフになる。

ggpaired(data = sleep, x = "group", y = "extra")

ドキュメントはちゃんと読みましょうね。

感想

ggpubrは初めて使ってみたけど、簡単に綺麗なグラフが書けていいなーって印象です。 モジュールにないグラフを書こうと思うと、ちょっと大変なんだろうけど、結構手広くカバーしているみたいなので、便利かなと思いました。 本当はggplot2を修業するのがいいんだろうけどね、、、、

あと、対応のあるデータのプロットって、どうするのが普通なんでしょうか。 ggpairedでは箱ひげがデフォルトでついているけど、論文では単純に線で結んだだけのプロットをよく見る気がする。

箱ヒゲの方がデータ特徴を表現できるけど、ちょっとうるさい印象のグラフになる気もするし、どうなんでしょうかね。 この辺りのセンスがまだまだなので、きちんと身につけていきたいですね。

Sedanini Lenticchie Rosseを食べる。

謎パスタシリーズが続きます。

こちらもイタリアより、

Sedani = パスタの一種

Lenticchie = レンズ豆

ということで、赤いレンズ豆のパスタということらしい。

謎パスタ

www.felicia.it

 

しかしやはりパッケージからは茹で時間が不明であり、パッケージの左下の表記から6分でひとまず茹でてみました。

 

感想

6分で茹でて、別のバジルソースをかけたところ、美味しく食べられました。

6分でちょうどの硬さだったと思いますが、どうも少しパサパサしていたので、ソースを工夫するなしするとパサパサ感なく食べられるかなと思います。

 

参考になれば

 

 

Tortelloni con Prosciutto CrudoにPanna Chef Per Cucinare Cremosa E Omogeneaをかけて食べる。

気づけば2年間更新せずでした。

2年の間に博士とったり就職したりライフイベントがあったりしましたが、それは置いておいて、、

 

 

Tortelloni con Prosciutto CrudoにPanna Chef Per Cucinare Cremosa E Omogeneaをかけて食べてみました。

 

www.barilla.com

www.prontospesa.it

経緯

ひょんなことから、イタリアの方から色々と食材をいただく機会がありました。英語表記があるものや、見た目から分かりやすいもの (明らかなバジルソースなど) はうまく調理できたのですが、上の2つはなんだかよくわからなかったのでずっと後回しにしていたのです。

いつまでもおいておいても悪くなるだけなので、今回両方を合わせて食べてみました。

 

結果

Tortelloni con Prosciutto Crudoの方は調べたところ、何か詰めてあるパスタの一種らしかったです。

ja.wikipedia.org

Wikiによるとバターなどで食べるらしいですが、今回は同時にもらったソースっぽいものも使ってみたかったので、そちらを利用してみました。

 

作り方は

 

↓パスタ100 gあたり1Lの水に7gの塩を溶かす。

↓9分間茹でる。

↓ソースの方は2つを小鍋に開けて、温める。

↓混ぜる。

 

で食べてみました。(写真は撮り忘れました) 

 

感想

クリームはかなり濃厚で、パスタに絡めて食べると結構美味しかったです。

一方で、味は薄かった気がしたので、クレイジーソルト的なものをかけたところ、一層美味しくなって食べられました。

茹で時間はもう少し短めでも良かったかもしれません、多少柔らかめでした。

 

7-8分程度で茹でて、ソースがわに少し味付けを足しておけばより美味しく食べられるかもしれません。

 

誰かの役に立てば良いですが。

 

 

 

 

博士号を取るために筋トレを始める

旦那です

 

タイトルの通り、博士号取得を目指して筋トレを始めました

 

ふざけてんのかって言う話ですが、僕は割と真面目です

 

結局のところ, 論文を出すにも, 博士号を取るにも  意思の強さと決意が最も重要だと思います. 

筋肉鍛えて, 頑張ります. 

 

それとは別件で, 僕は4月でD3になるのですが, 今までの博士課程での日々にたくさんの後悔をしてきました. 

それをたまに綴っておこうかと思っています. (また更新途絶えたらごめんなさい)  

 

いつか誰かの, 役にたてば良いなと思いつつ. 

とりあえずは, 頑張ります

料理と実験

旦那です。

twitterというものをやっていないので、誰も気に留めないようなつぶやきを書くところもなく、頭から消えていくのみなのでたまには書き留めておきます。

 

よく料理と実験は似ていると言われますが、全くその通りだと思います。

特に僕が普段やっている分子細胞生物学的な実験 (といってもちょっとしたDNAワークのみ) ではあれとこれを混ぜて、あれをあっためて、これを冷やしてと、本当に料理のようです。

 

特に今日思ったのが、

 

はて、試薬どこまで入れたっけ

という感覚と

あれ、お米何合まで入れたっけ

という感覚は非常に近いということです。

 

 

それだけです。