是否有可用于元素的 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}