Группы диаграмм с использованием символических координат

Группы диаграмм с использованием символических координат

Я хотел бы создать сюжет, аналогичный тому, что пример столбчатой ​​диаграммы, но с ящичными диаграммами вместо столбиков.

На данный момент у меня есть следующее MWE:

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{statistics}

\begin{document}

\pgfplotstableread{
%\begin{filecontents}{test.dat}
error
1
2
3
5
5
5
5
5
5
15
%\end{filecontents}
}\mytable

%Define the color series
\definecolor{RYB1}{RGB}{230,97,1}
\definecolor{RYB2}{RGB}{200,150,250}
\pgfplotscreateplotcyclelist{colorbrewer-RYB}{
{RYB1!50!black,fill=RYB1},
{RYB2!50!black,fill=RYB2}} %Do not add a comma after the last element of the list!

%Define the width of the boxes
\def\boxwidth{0.75}%

\begin{tikzpicture}
\begin{axis}[
    scale only axis,
    axis on top,
    ymin=0, ymax=20,
    ylabel={Error [m]},
    boxplot/draw direction=y,
    cycle list name=colorbrewer-RYB,
    xtick={1.5, 4.5},
    xticklabels={Group A, Group B},
    tick align=inside,
    xtick style={draw=none},
    legend style={at={(0.5,-0.15)}, anchor=north,legend columns=-1},
    legend image code/.code={
    \draw[#1, draw=none] (0cm,-0.1cm) rectangle (0.6cm,0.1cm);
    },
]

%Group A
\addplot+[
    boxplot={
        draw position=1,
        average, % <---- Where is the average?
        box extend=\boxwidth
    },
]
table[ y index=0, row sep=newline ]{\mytable}; % <---- Where are the outliers?
\addlegendentry{Yes\;};

\addplot+[
    boxplot={
        draw position=2,
        every average, % <---- This was a desperate try with a surprising result
        box extend=\boxwidth
    },
]
table[ y index=0, row sep=newline ]{\mytable};
\addlegendentry{No\;};

%Group B
\addplot+[
    boxplot prepared={draw position=4,
        lower whisker=2.5,
        lower quartile=4,
        median=5,
        average=6,
    upper quartile=8,
        upper whisker=9,
        box extend=\boxwidth,
    }
]
coordinates {(0,12) (0,10)};

\addplot+[
    boxplot prepared={draw position=5,
        lower whisker=2.5,
        lower quartile=4,
        median=8.5,
        average=10,
    upper quartile=12,
        upper whisker=15,
        box extend=\boxwidth,
    },
]
table[row sep=\\,y index=0] { 0\\ 14\\ 15\\ };

\end{axis}
\end{tikzpicture}
\end{document}

что приводит к

введите описание изображения здесь

Запрос дополнений/функций

  • Было бы неплохо иметь возможность создавать этот тип сгруппированных диаграмм типа boxplots, как это делается с диаграммами bar. В них можно указать набор символических координат и просто добавлять столбцы, используя эти координаты. Столбцы с одинаковыми координатами затем образуют группу, в которой интервалы хорошо учитываются автоматически.

  • В представленном MWE все многомерные величины определяются вручную. Если возможно, было бы неплохо иметь возможность создавать фигуру так, чтобы она автоматически масштабировалась при определении ее желаемой высоты и ширины, например, используя что-то вроде, \setlength\figureheight{1.5in}% \setlength\figurewidth{1.5in}% чтобы не было необходимости изменять длины вручную. С этой целью, я полагаю, что возможность добавлять поля с использованием символических координат была бы полезна.

Проблемы с представленным MWE

Данные первых двух графиков (группа A) взяты из той же таблицы, тогда как ячейки двух других (группа B) подготовлены. На предыдущем рисунке есть следующие проблемы (которые я не знаю, как решить, очевидно, я делаю что-то не так...)

Проблемы со средними значениями

  • В первом поле я использовал опцию «среднее», намереваясь построить график среднего значения, но это не сработало.
  • Во втором случае я попытался (случайно) использовать «все средние значения» и получил удивительный результат: он выводит на график выбросы.

Как правильно построить график средних значений? Если возможно, так, чтобы можно было выбрать форму (одинаковую форму для всех ящиков).

Проблемы с выбросами

Я также хочу построить график выбросов во всех ячейках, а также, если возможно, выбрать форму (одинаковую для всех ячеек).

  • В случае первых двух графиков, поскольку это необработанные данные, импортированные из таблицы, я предполагаю, что расчет выбросов происходит автоматически. Возможно, мне нужно добавить нужную опцию... I Как их добавить?

  • В случае подготовленных участков я пробовал добавлять координаты и таблицу, но безуспешно. Что я упускаю?

Связанный контент