如何在 tikz-pgf 中選擇資料範圍?

如何在 tikz-pgf 中選擇資料範圍?

這是我的表格的子集,我想用它來創建堆疊條形圖:

在此輸入影像描述

是否可以為前兩行選擇 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} 

示範

相關內容