折れ線グラフで数値変数とカテゴリ変数の間の相互作用の重要性を伝えるための簡潔な方法(Y軸の応答、X軸の数値予測変数、およびカテゴリ変数の各レベルの線)について長い間戸惑いました。それらの軸にプロットされた異なる色またはパターンの)。私はついに、データの行の代わりに凡例キーを接続する従来の「ブラケットとp値」を描画するというアイデアを思いつきました。
これが私が言っていることのモックアップです:
library(ggplot2);
mydat <- do.call(rbind,lapply(1:3,function(ii) data.frame(
y=seq(0,10)*c(.695,.78,1.39)[ii]+c(.322,.663,.847)[ii],
a=factor(ii-1),b=0:10)));
myplot <- ggplot(data=mydat,aes(x=b,y=y,colour=a,group=a)) +
geom_line()+theme(legend.position=c(.1,.9));
# Plotting with p-value bracket:
myplot +
# The three line segments making up the bracket
geom_segment(x=1.2,xend=1.2,y=13.8,yend=13) +
geom_segment(x=1.1,xend=1.2,y=13,yend=13) +
geom_segment(x=1.1,xend=1.2,y=13.8,yend=13.8) +
# The text accompanying the bracket.
geom_text(label='p < 0.001',x=2,y=13.4);
これは、折れ線グラフ自体のどこかにブラケットをプロットしようとするよりも雑然としません。
問題は、geom_segment
sとyのx値とy値geom_text
が試行錯誤によって取得され、別のデータセットの場合、これらの座標が完全に間違っていることです。これは、モデルからこれらのコントラストを引き出してプロットするプロセスを自動化することを目的とした関数を作成しようとしている場合に問題になります(effects
パッケージのようなものですが、データの表現方法についてより柔軟性があります)。
私の質問は、凡例を構成する各ボックスの実際の座標をプルして、geom_segment
とで使用されるスケールに変換するgeom_text
方法、オブジェクトの作成時に各ボックスの座標を手動で指定するmyplot
方法、または個々のボックスの場所を確実に予測する方法はありますか?になり、それらをプロットのスケールに変換しmyplot$theme$legend.position
ます0.1 0.9
。
これはggplot2内で実行したいと思います。これは、堅牢でエレガントであり、スクリプトで実行したい他のすべてのことに最適だからです。私はggplot2を拡張する追加のパッケージを使用することもできますし、ラインプロットの有意水準を視覚的に示す他のアプローチも使用できます。ただし、「そうすべきではない」という提案は建設的なものではありません。私が個人的に同意するかどうかにかかわらず、私の共同編集者とその編集者は(残念ながら)Stackoverflowを読みません。
アップデート:
この質問は次のように単純化されます。myplot$theme$legend.key.height
が線上にありmyplot$theme$legend.position
、プロット領域全体の大まかな部分にあるように見える場合(正確ではありません)、これらをx軸とy軸が描かれている単位に変換するにはどうすればよいですか。 x軸とy軸のスケールをとの単位に変換しlegend.key.height
ますlegend.position
か?