Это подмножество моей таблицы, которое я хочу использовать для создания столбчатой диаграммы с накоплением:
Можно ли выбрать столбцы A–F для первых двух строк, а затем выбрать столбец G для остальных строк, чтобы создать столбчатую диаграмму с накоплением?
Это мой MWE:
\begin{tikzpicture}
\pgfplotstableread{ % Read the data into a table macro
Label A B C D E F G
Yes 0.24 0.92 0.52 0.96 0.52 0.24 nan
No 0.76 0.08 0.48 0.04 0.48 0.76 nan
High nan nan nan nan nan nan 0.08
Medium nan nan nan nan nan nan 0.4
Low nan nan nan nan nan nan 0.52
}\datatable
\pgfplotstabletranspose[string type, colnames from=Label, input colnames to=Label]\datatabletransposed{\datatable}
\begin{axis}[
xbar stacked, % Stacked horizontal bars
xmin=0, % Start x axis at 0
ytick=data, % Use as many tick labels as y coordinates
yticklabels from table={\datatabletransposed}{Label}, % Get the labels from the Label column of the \datatable
legend style={at={(0,0)}, anchor=north east,at={(axis description cs:0,-0.1)}}]
]
\addplot [fill=green!70!blue] table [x=Yes, y expr=\coordindex] {\datatabletransposed};
\addplot [fill=red!70!white] table [x=No, y expr=\coordindex] {\datatabletransposed};
\legend{Yes, No}
\end{axis}
\end{tikzpicture}
решение1
Использование nan или NaN не является хорошей идеей для отсутствующих данных, по крайней мере, для столбчатой диаграммы с накоплением.
\documentclass[multi=tikzpicture]{standalone}
\usepackage{pgfplots,pgfplotstable}
\begin{document}
\pgfplotstableread{% Read the data into a table macro
Label A B C D E F G
Yes 0.24 0.92 0.52 0.96 0.52 0.24 0
No 0.76 0.08 0.48 0.04 0.48 0.76 0
High 0 0 0 0 0 0 0.08
Medium 0 0 0 0 0 0 0.4
Low 0 0 0 0 0 0 0.52
}\datatable
\pgfplotstabletranspose[string type, colnames from=Label, input colnames to=Label]\datatabletransposed{\datatable}
%\begin{tikzpicture}
%\node{\pgfplotstabletypeset[string type]\datatabletransposed};
%\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
xbar stacked, % Stacked horizontal bars
xmin=0, % Start x axis at 0
ytick=data, % Use as many tick labels as y coordinates
yticklabels from table={\datatabletransposed}{Label}, % Get the labels from the Label column of the \datatable
legend style={at={(0,0)}, anchor=north east,at={(axis description cs:0,-0.1)}}]
\addplot [fill=green!70!blue] table [x=Yes, y expr=\coordindex] {\datatabletransposed};
\addplot [fill=red!70!white] table [x=No, y expr=\coordindex] {\datatabletransposed};
\addplot [fill=green!70!blue] table [x=High, y expr=\coordindex] {\datatabletransposed};
\addplot [fill=red!70!white] table [x=Medium, y expr=\coordindex] {\datatabletransposed};
\addplot [fill=yellow] table [x=Low, y expr=\coordindex] {\datatabletransposed};
\legend{Yes, No}
\end{axis}
\end{tikzpicture}
\end{document}