2011-09-21 1 views
3

Пожалуйста, обратите внимание:земля различных условий и предметы сразу в Mathematica

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] 

enter image description here

участок на левых представляет каждый субъект среднего числа фиксации наряду со стандартным отклонением для состояния 1. На праве на условия 2 .

Как я мог построить их на одном участке?

Если это:

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

был средний и SD по этому вопросу, как я мог показать, как?

-Как я могу показать 2 условия на аналогичном участке для разных предметов -Как я могу показать среднее значение группы и SD на нем.

+0

@Yoda, может быть, это был "Need" я забыл. Проблема в том, что я бы потерял стандартное отклонение, если я использую BarChart :-( – 500

+0

@Yoda. Извините, я не понимаю :-(И если у меня есть небольшая идея, я думаю, что бары будут перекрываться? – 500

+0

@ 500 'BoxWhiskerChart' (новый в версии 8) делает почти то, что вы хотите. Однако вы получаете квартили (выделение 50% вокруг среднего), а не z-баллы (выделение 68% вокруг среднего значения). Так или иначе, я не мог получить 'ErrorListPlot' запускайте на моей машине без изменений 8, даже несмотря на то, что я действительно называл 'Needs [" ErrorBarPlots '"]' – DavidC

ответ

5

Edit:

Я начал с более чем. Учитывая, что данные просты и чисты, может быть проще всего использовать 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 = [email protected][[1, 1]]}, {5.5, m1}}], 
     Blue, Line[{{0, m1 = [email protected][[2, 1]]}, {5.5, m1}}]}, 
     Thickness[0.005], Red, 
     Line[{{#[[1]], #[[2, 1]]}, {#[[1]], #[[2, 2]]}}] & /@ 
     [email protected]{Range[5], ({#[[1]] + #[[2]], #[[1]] - #[[2]]} & /@ 
     [email protected][[1]])}, 
     Thickness[0.005], Blue, 
     Line[{{#[[1]], #[[2, 1]]}, {#[[1]], #[[2, 2]]}}] & /@ 
     [email protected]{Range[5], ({#[[1]] + #[[2]], #[[1]] - #[[2]]} & /@ 
     [email protected][[2]])}, 
     }] 

whisker1

The ниже BoxWhiskerChart от ваших данных. Если это выглядит неопределенно, как что-то, что вас интересует, оно может быть изменено таким образом, чтобы спред от 25-го процентиля до 75% процентиля был изменен, чтобы отразить распространение одного s.d. выше и ниже среднего.

И, да, на карту легко наложить групповое средство (N = 5).

[Причина отсутствия идеальной симметрии вокруг среднего заключается в том, что я использовал ваши средства и стандартные отклонения для генерации необработанных данных, предполагая нормальное распределение. Я использовал только 100 точек данных за испытание, поэтому немного перекос является естественным. Этого не произойдет, если мы хотим настроить диаграмму, чтобы отразить стандартные отклонения, которые являются симметричными.]

BoxWhiskerChart

+0

Спасибо Дэвиду! – 500

+0

@ 500 Я дал вашему графику еще один шаг, используя 'ListPlot'. – DavidC

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"] 
] 

enter image description here

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"] 
] 

enter image description here

Как 3. Я не понимаю, как вы можете говорить о групповом значении, если хотите показать данные отдельных предметов. Вопрос четвертый (5-й) полностью неясен. Я предлагаю вам удалить эти вопросы, поскольку они, похоже, не являются специфическими для программирования Mathematica.

+0

Спасибо Sjoerd. Я удалил последний вопрос. Я думал, что важно показать, как посмотреть, как объекты расположены против для группы. Я просто подумал, что у меня может быть горизонтальная линия для этого? Если вы не считаете, что это уместно, я буду полагаться на ваше мнение, так как вы эксперт. Большое спасибо за внимание. – 500

+0

@ 500 Нет причин для устранения групповых средств. Вы пытаетесь показать различие в двух экспериментальных условиях. – DavidC

+0

Итак, вот что мы на самом деле смотрим на то, что в 3-секундной задаче с бесплатными viwewing сколько фиксаций делали предметы, если мы рассматриваем их все (связь 1 здесь) или 6 см по крайней мере от центра (условие 2 здесь), я использую это во вступительном слове, чтобы показать, что с заданием и просмотром простой абстрактной картины испытуемые исследовали. Мне жаль, что это выходит за рамки чисто программирующего вопроса, однако теперь я чувствую, что отображение математического stat-кода связано с Mathematica. – 500

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 = [email protected]{meanCond1, meanCond2}; 
x2 = ErrorBar @@@ [email protected]{stdCond1, stdCond2}; 

[email protected](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"}] & @@@ 
    [email protected]{[email protected]{x1, x2}, {Blue, Yellow, Green, Gray, Red}}) 

enter image description here

Каждая точка является другая тема. Координата x является средним значением для условия 1, а координата y является средним значением условия 2. Длины сторон прямоугольников являются соответствующими стандартными отклонениями. Поэтому, когда он накладывается друг на друга, если вы разумны в выборе цветов (и если их не так много), возможно, это сработает.

+1

Я думаю, что это потрясающе. – 500

+1

Альтернативой, которая может уменьшить беспорядок, является использование ['Disk'] (http://reference.wolfram.com/mathematica/ref/Disk.html) для создания эллипсов, и это проще. 'Диск [coords, Subtract @@@ errs]' должен делать при замене 'Rectangle' в' ErrorBarFunction'. – rcollyer

+1

http://www.donrelyea.com/hilbert_algorithmic_art_menu.htm :) –

5

Для любого числа серий:

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

enter image description here

+0

Просто интересно ... почему вы рассматривали x как непрерывную переменную?Это люди: 1, 2, 3, 4, 5 - это просто ярлыки, как я понимаю. – DavidC

+0

@David Это просто для визуализации. Тень легче увидеть, чем суперпозиция области ошибок, предложенная Сьёрддом. Я хорошо знаю концептуальное скручивание, которое я сделал :) –

+0

@ David см. Мой новый способ бренда –