从 pgfplotstable 中的数据指向 pgfplot

从 pgfplotstable 中的数据指向 pgfplot

是否有可用于元素的 PGF 坐标pgfplots表?组图允许通过(group c2r1.center)(第 2 列,第 1 行)来处理图。

\pgfplotstabletypeset[col sep=&,row sep=\\,sci zerofill]{
  colA & colB & colC \\
  11   & 12   & 13   \\
  21   & 22   & 23   \\
}

通过这样的坐标,我可以从 pgfplotstable 中的数据到图中的表示绘制一个箭头。

答案1

不是开箱即用的,因为所有pgfplotstable操作都是排版正常的tabular。但是,您可以\pgfplotstabletypeset在 TikZ 节点中包装单元格内容,类似于手动完成的答案如何在多个表格单元格周围绘制线条

下面是包含如何使用它的示例的代码。它重新定义了用 生成的表的单元格内容,以\pgfplotstabletypeset包含具有命名方案的节点<table name>-<row>-<col>,这也是 TikZ 命令使用的相同方案matrix

请注意,这需要两次编译运行才能正确定位所有内容,使用 TikZ 选项时总是如此remember picture

\documentclass{article}
\usepackage{pgfplotstable}
\begin{document}

% Define new column and row counters
\newcounter{colcount}
\newcounter{rowcount}

% Command for wrapping cell contents in TikZ nodes with name <table name>-<row>-<col>
% 'remember picture' is necessary to make the node positions available in other tikzpicture environments
\newcommand\tabnode[1]{%
  \addtocounter{colcount}{1}%
  \tikz[remember picture,baseline,inner sep=0pt]
    \node (\pgfkeysvalueof{/pgfplots/table/name}-\arabic{rowcount}-\arabic{colcount}) {#1};
}

% New key for referencing tables typeset with pgfplotstabletypeset
\pgfplotstableset{name/.initial={table}}
% Redefine the typeset code to call \tabnode and reset counters as needed
\pgfplotstableset{
  typeset cell/.code={
  \ifnum\pgfplotstablecol=\pgfplotstablecols
    \pgfkeyssetvalue{/pgfplots/table/@cell content}{\tabnode{#1}
      \addtocounter{rowcount}{1}
      \setcounter{colcount}{0}\\
    }%
  \else
    \pgfkeyssetvalue{/pgfplots/table/@cell content}{\tabnode{#1}&}%
  \fi
}
}


% Example of use: Read table and save to a macro.
% This step is not necessary, you could also provide the table inline to \pgfplotstabletypeset
\pgfplotstableread[col sep=&,row sep=\\]{
  colA & colB & colC & Column D \\
  11   & 12   & 13  & 9 \\
  21   & 22   & 23  & 15 \\
  17 & 10 & 19 & 20 \\
}\mytable


\begin{minipage}{0.4\textwidth}
% Typeset the table as usual.
% You can provide an optional name, otherwise the nodes will be called tab-<row>-<col>
\pgfplotstabletypeset[col sep=&,row sep=\\,sci zerofill,name=table]\mytable
\end{minipage}%
\hfill %
\begin{minipage}{0.4\textwidth}
% Plot the data. 'clip=false' stops the path being clipped at the axis boundary
\begin{tikzpicture}[remember picture]
\begin{axis}[clip=false,width=5cm]
\addplot table \mytable;
% Draw a connection line. Needs the 'overlay' option
\draw[overlay,red] (table-2-2) -- (axis cs:21,22);
\draw[overlay,red] (table-3-2) -- (axis cs:17,10);
\end{axis}
\end{tikzpicture}
\end{minipage}

\end{document}

在表格和图表之间画线

相关内容