0

折れ線グラフで数値変数とカテゴリ変数の間の相互作用の重要性を伝えるための簡潔な方法(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_segmentsと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か?

4

2 に答える 2

4

提起されたあなたの質問に対する答えはわかりません。しかし、情報を伝達するためのあまり凝っていないアプローチが、レベル名に重要度コードが含まれるようにレベルの名前を変更することである場合、別の、間違いなく迅速に実行可能です。最初の例では、

levels(mydat$a) <- list("0" = "0", "1 *" = "1", "2 *" = "2")

そして、伝説はこれを反映します:

ここに画像の説明を入力してください

より多くのレベルと重要なコンボがあれば、おそらく一連のシンボルを作成することができます。次に、図の凡例で、記号の各セットに反映されているpレベルについて説明します。

これは、情報を伝えるための関連する方法である可能性があります。次の図は、ここで作成されrxnNormHandyStuff います。残念ながら、これは別の答えではありません。新しいバージョンのでこれを機能させることができなかったからですggplot2。うまくいけば、私はすぐにそれを理解することができます。 rxnNorm

于 2013-02-03T22:48:58.787 に答える
1

私の答えは、を使用するggplot2のではなく、lattice パッケージを使用することです。dotplot連続変数とカテゴリ変数を比較したい場合に使用するものだと思います。

ここではdotplot、2 つの方法で使用します。1 つはあなたのプロットを再現する方法で、もう 1 つは

library(lattice)
library(latticeExtra)      ## to get ggplot2 theme

  #y versus levels of B, in different panel of A
  p1 <- dotplot(b~y|a , 
          data = mydat, 
          groups = a,
          type = c("p", "h"),
          main = "interaction between numeric and categorical variables ",
          xlab = "continuous value",
                par.settings = ggplot2like())

  #y versus levels of B , grouped by a(color and line are defined by a)
  p2 <- dotplot(b~y, groups= a , 
          data = mydat,
          type = c("l"),
          main = "interaction between numeric and categorical variables ",
          xlab = "continuous value",
                par.settings = ggplot2like())

  library(gridExtra)           ## to arrange many grid plots
   grid.arrange(p1,p2)

ここに画像の説明を入力

于 2013-02-04T01:58:29.807 に答える