This question is basically a continuation of this answer. How can I handle outlier data in PGF boxplots, supposed my input table looks like this:
\pgfplotstableread{
index lw lq med uq uw out1 out2 out3
0 5 7 8.5 9.5 10 4 11 12
1 4 5 6.5 8.5 9.5 3 2 13
}\datatable
The complete MWE would look like this:
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{statistics}
\makeatletter
\pgfplotsset{
boxplot prepared from table/.code={
\def\tikz@plot@handler{\pgfplotsplothandlerboxplotprepared}%
\pgfplotsset{
/pgfplots/boxplot prepared from table/.cd,
#1,
}
},
/pgfplots/boxplot prepared from table/.cd,
table/.code={\pgfplotstablecopy{#1}\to\boxplot@datatable},
row/.initial=0,
make style readable from table/.style={
#1/.code={
\pgfplotstablegetelem{\pgfkeysvalueof{/pgfplots/boxplot prepared from table/row}}{##1}\of\boxplot@datatable
\pgfplotsset{boxplot/#1/.expand once={\pgfplotsretval}}
}
},
make style readable from table=lower whisker,
make style readable from table=upper whisker,
make style readable from table=lower quartile,
make style readable from table=upper quartile,
make style readable from table=median,
make style readable from table=lower notch,
make style readable from table=upper notch
}
\makeatother
\usepackage{filecontents}
\pgfplotstableread{
index lw lq med uq uw out1 out2 out3
0 5 7 8.5 9.5 10 4 11 12
1 4 5 6.5 8.5 9.5 3 2 13
}\datatable
\begin{document}
\begin{tikzpicture}
\begin{axis}[boxplot/draw direction=y]
\pgfplotstablegetrowsof{\datatable}
\pgfmathtruncatemacro\TotalRows{\pgfplotsretval-1}
\pgfplotsinvokeforeach{0,...,\TotalRows}
{
% select outlier data
\pgfplotstablegetelem{#1}{out1}\of\datatable
\let\oA=\pgfplotsretval
\pgfplotstablegetelem{#1}{out2}\of\datatable
\let\oB=\pgfplotsretval
\pgfplotstablegetelem{#1}{out3}\of\datatable
\let\oC=\pgfplotsretval
\addplot+[
boxplot prepared from table={
table=\datatable,
row=#1,
lower whisker=lw,
upper whisker=uw,
lower quartile=lq,
upper quartile=uq,
median=med
},
boxplot prepared,
% to get a more useful legend
area legend
]
table[row sep=\\]{\oA \\ \oB\\ \oC}; % here is the problem
% add legend entry
\pgfplotstablegetelem{#1}{index}\of\datatable
\addlegendentryexpanded{\pgfplotsretval}
}
\end{axis}
\end{tikzpicture}
\end{document}
It would also be the option to restructure my input table if this helps a more convenient solution.

table {\datatableoutliers}totable [y=#1] {\datatableoutliers}, the respective column will be selected. – jayanywhere Jul 27 '22 at 17:21