3

考えてください :

Needs["ErrorBarPlots`"];

fixNumberF1F6 = {{{7.11`, 7.51`, 11.14`, 8.19`, 6.58`}, 
                  {2.14`, 2.33`,2.25`, 1.53`,1.71`}},               
                  {{4.69`, 4.79`, 3.78,4.34`, 4.8`}, 
                   {2.22`, 2.71`, 3.18`, 2.29`, 1.93`}}}

fixNumberF1F6 [[1,1]]は、条件1の各被験者の平均凝視数を指します。fixNumberF1F6[[1,2]]これらの平均の標準偏差。fixNumberF1F6[[2]]は条件2を参照します。

plotOptionsXX[title_, yName_, xName_, colors_: Black] :=

  {Frame -> {{True, False}, {True, False}},
   PlotStyle -> colors,
   PlotLabel -> 
   Style[title, Bold, 14, Opacity[1], FontFamily -> "Helvetica"],
   PlotStyle -> Directive[Black, PointSize[Medium]],
   PlotRangePadding -> 0,
   Frame -> {{True, False}, {True, False}},
   LabelStyle -> Directive[Black, Bold, 12],
   FrameLabel -> {{Style[yName, Opacity[1]], 
   None}, {Style[xName, Opacity[1]], None}},
   FrameStyle -> Opacity[0],
   FrameTicksStyle -> Opacity[1],
   AxesStyle -> Directive[Black, 12],
   ImageSize -> laTaille};

ErrorListPlot[fixNumberF1F6[[#]] // Transpose,
              PlotRange -> {{0, 6}, {0, 15}},
              ImageSize -> 300,
              FrameTicks ->{{Range[1, 13, 2], None},{{1, 2, 3, 4, 5}, None}},
              PlotStyle -> Directive[Black, AbsolutePointSize[10], AbsoluteThickness[2]],
              plotOptionsXX["Mean Fixation number", "Fixation Nuber", "SubNo"]] & /@ Range[2]

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

左側のプロットは、条件1の標準偏差とともに各被験者の平均凝視数を表しています。右側は条件2のプロットです。

どうすれば両方を1つのプロットにプロットできますか?

この場合:

fixNumberF1F6across = {{8.10, 1.99}, {4.48, 2.46}}

主題全体の平均とSDでしたが、どうすれば両方を表示できますか?

-異なる被験者の同様のプロットで2つの条件を表示するにはどうすればよいですか?-グループの平均とSDを表示するにはどうすればよいですか?

4

4 に答える 4

5

編集

私は最初から始めました。データがいかにシンプルでクリーンであるかを考えると、を使用ListPlotしてバーを追加するのが最も簡単な場合がありますEpilog

それでも少し調整できます。たとえば、青と赤のデータポイントとバーの間にわずかなスペースを入れたり、凡例を追加したりできますが、基本的な考え方はそこにあります。

data = {{{7.11`, 7.51`, 11.14`, 8.19`, 6.58`}, {2.14`, 2.33`, 2.25`,   1.53`, 1.71`}}, {{4.69`, 4.79`, 3.78, 4.34`, 4.8`}, {2.22`,  2.71`, 3.18`, 2.29`, 1.93`}}};

ListPlot[{data[[1, 1]], data[[2, 1]]},
   PlotStyle -> {{PointSize[.025], Red}, {PointSize[0.025], Blue}},
   Frame -> True, 
   PlotRange -> {{0.5, 5.5}, {0, 14}},
   FrameTicks -> {{Automatic, Automatic}, {Range[5], None}},
   FrameLabel -> {{"Fixation (ms)", None}, {"Subject", None}},
   Epilog -> {{Red, Thickness[0.003], Dashed, 
      Line[{{0, m1 = Mean@data[[1, 1]]}, {5.5, m1}}],
      Blue, Line[{{0, m1 = Mean@data[[2, 1]]}, {5.5, m1}}]},
      Thickness[0.005], Red, 
      Line[{{#[[1]], #[[2, 1]]}, {#[[1]], #[[2, 2]]}}] & /@ 
      Transpose@{Range[5], ({#[[1]] + #[[2]], #[[1]] - #[[2]]} & /@ 
      Transpose@data[[1]])},
      Thickness[0.005], Blue, 
      Line[{{#[[1]], #[[2, 1]]}, {#[[1]], #[[2, 2]]}}] & /@ 
      Transpose@{Range[5], ({#[[1]] + #[[2]], #[[1]] - #[[2]]} & /@ 
      Transpose@data[[2]])},
      }]

whisker1

BoxWhiskerChart以下はあなたのデータからのものです。これがあなたが興味を持っているもののように漠然と見える場合は、25パーセンタイルから75%パーセンタイルへの広がりが、平均の上下の1sdの広がりを反映するように変更されるように変更できます。

そして、はい、グループ平均(N = 5)をチャートにオーバーレイするのは簡単です。

[平均の周りに完全な対称性がない理由は、正規分布を仮定して、平均と標準偏差を使用して生データを生成したためです。1回の試行で100個のデータポイントしか使用しなかったため、少し歪むのは自然なことです。対称的な標準偏差を反映するようにチャートを微調整した場合、これは起こりません。]

BoxWhiskerChart

于 2011-09-21T22:21:25.947 に答える
5

シリーズの数:

plotseries[a_] := 
 Module [{col = ColorData[22, "ColorList"]}, 
  Plot[Evaluate@(Piecewise[{#[[2]], #[[1]] - 1/3 <= x <= #[[1]] + 1/3} & /@ 
           Thread[List[Range@Length@#, #]]] & /@ 
              ({a[[#, 1]] + a[[#, 2]], a[[#, 1]] - a[[#, 2]]}) & /@ 
                (Range@Length@a)), {x, 0, 1 + Length@(a[[1, 1]])}, 
   ClippingStyle -> None,
   PlotStyle -> {None},
   Exclusions -> False,
   Filling -> ({2 # - 1 -> {{2 #}, Directive[col[[#]], Opacity[.2]]}} & /@ 
             Range@Length@a),
   Ticks -> {Range@Length[a[[1, 1]]], Range@#2 &},
   AxesLabel -> {Style["Subject", Medium, Bold], Style["Fixation Time", Medium, Bold]},
   Epilog -> 
    MapIndexed[{Directive[col[[#2[[1]]]], PointSize[.03]], 
       Point@Thread[List[Range@Length[#1[[1]]], #1[[1]]]]} &, a]
   ]
  ]
  b = Table[{Table[j^(i/3) + i, {j, 6}], Table[1, {j, 6}]}, {i, 1, 3}];
  plotseries[b]

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

于 2011-09-22T01:58:43.567 に答える
4

私はエラープロットをあまり使用しないので、これはデータを表示する非標準形式である可能性が高く、のドキュメントの例に基づいて急いでまとめますErrorBarFunction

(*split it up so it's easier to follow*)
meanCond1 = fixNumberF1F6[[1, 1]];
stdCond1 = fixNumberF1F6[[1, 2]];
meanCond2 = fixNumberF1F6[[2, 1]];
stdCond2 = fixNumberF1F6[[2, 2]];

x1 = Transpose@{meanCond1, meanCond2};
x2 = ErrorBar @@@ Transpose@{stdCond1, stdCond2};

Show@(ErrorListPlot[{#1},
     ErrorBarFunction -> 
      Function[{coords, errs}, {Opacity[0.2], EdgeForm[{#2}], 
        Rectangle[coords + {errs[[1, 1]], errs[[2, 1]]}, 
         coords + {errs[[1, 2]], errs[[2, 2]]}]}], PlotStyle -> #2, 
     Axes -> False, Frame -> True, 
     FrameLabel -> {"Condition 1", "Condition 2"}] & @@@ 
   Transpose@{Transpose@{x1, x2}, {Blue, Yellow, Green, Gray, Red}})

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

各ドットは異なる主題です。x座標は条件1の平均であり、座標yは条件2の平均です。長方形の辺の長さはそれぞれの標準偏差です。したがって、重複はしますが、色の選択に慎重であれば(そして、被写体が多すぎない場合)、おそらくうまくいく可能性があります。

于 2011-09-21T22:21:30.520 に答える
3
ErrorListPlot[Transpose /@ fixNumberF1F6, 
   PlotRange -> {{0, 6}, {0, 15}}, ImageSize -> 300, 
   FrameTicks -> {{Range[1, 13, 2], None}, {{1, 2, 3, 4, 5}, None}}, 
   PlotStyle -> 
       {
        Directive[Opacity[0.6],Black, AbsolutePointSize[10], AbsoluteThickness[2]], 
        Directive[Opacity[0.6],Gray, AbsolutePointSize[10], AbsoluteThickness[2]]
       }, 
   plotOptionsXX["Mean Fixation number", "Fixation Number", "SubNo"]
]

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

ErrorListPlot[fixNumberF1F6across, PlotRange -> {{0, 3}, {0, 15}}, 
    ImageSize -> 300, 
    FrameTicks -> {{Range[1, 13, 2], None}, {{1, 2}, None}}, 
    PlotStyle -> Directive[Black, AbsolutePointSize[10], AbsoluteThickness[2]], 
    plotOptionsXX["Mean Fixation number", "Fixation Number", "Condition Number"]
]

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

3日目は。個々の被験者のデータを表示したい場合、グループの意味についてどのように話すことができるかわかりません。4番目(5番目?)の質問は完全に不明確です。これらの質問はMathematicaプログラミングに固有のものではないように思われるので、削除することをお勧めします。

于 2011-09-21T22:12:04.220 に答える