需要帮助从 Tikz 中的 \plot 函数制作数据表

需要帮助从 Tikz 中的 \plot 函数制作数据表

我希望能够从 Tikz 中的绘图生成点列表,其中 x 值的间隔和范围可调整。基本上是这样的:

++++++++++++++
+            +
+     ^      +
+    / \     +
+   /   \    +
+  /     \   +
++++++++++++++

 X | Y 
-------
-3 | 1 
-2 | 2 
-1 | 3 
0  | 4 
1  | 3 
2  | 2 
2  | 1 

这是一个最小的工作示例:

\documentclass{article}
\usepackage{xcolor}
\usepackage{float}
\definecolor{abmorange}{HTML}{F7D700}
\definecolor{abmred}{HTML}{EB5448}
\definecolor{abmblue}{HTML}{2C90C6}
\definecolor{abmgreen}{HTML}{9DAB6F}
\definecolor{abmcream}{HTML}{FEFEDD}
\definecolor{abmyellow}{HTML}{EEEE00}
\usepackage{caption}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.4} 

\tikzset{
  dim above/.style={to path={\pgfextra{
        \pgfinterruptpath
        \draw[>=latex,|<->|,black!50] let
        \p1=($(\tikztostart)!2mm!90:(\tikztotarget)$),
        \p2=($(\tikztotarget)!2mm!-90:(\tikztostart)$)
        in(\p1) -- (\p2) node[fill=black!5,pos=.5,sloped,above,font=\sffamily]{#1};
        \endpgfinterruptpath
      }
    }
  },
  dim below/.style={to path={\pgfextra{
        \pgfinterruptpath
        \draw[>=latex,|<->|,black!50] let 
        \p1=($(\tikztostart)!2mm!90:(\tikztotarget)$),
        \p2=($(\tikztotarget)!2mm!-90:(\tikztostart)$)
        in (\p1) -- (\p2) node[pos=.5,sloped,below,font=\sffamily]{#1};
        \endpgfinterruptpath
      }
    }
  },
}

\newenvironment{plots}[2][10]{
\begin{figure}\centering
\caption{#2}
\begin{tikzpicture}
\begin{axis}[axis x line= middle, axis y line= middle, width=\textwidth, samples=50,grid=both, domain=-10:10, xmin=-#1, xmax=#1, ymin=-#1, ymax=#1, ultra thick, scale only axis, enlargelimits=false, anchor=origin, disabledatascaling]
}{
\end{axis}
\end{tikzpicture}
\end{figure}
}

\newcommand{\func}[2][abmblue]{\addplot[color=#1] {#2};}

\newcommand{\parfunc}[3][abmblue]{\addplot[color=#1,domain=-200:200] ({#2},{#3});}
\begin{document}
\begin{plots}{Parametric Function of a Hyperbola}
\parfunc{2+4/cos(x)}{-3+3*tan(x)}
\end{plots}
\end{document}

补充说明一下:我已经想出了如何使用 \foreach 来制作表格:

\pgfkeys{/pgf/number format/.cd,fixed,fixed zerofill,precision=3} 
\makeatletter 
\let\globalappendtomacro=\pgfutil@g@addto@macro 
\makeatother 
\def\something{}
\foreach \i in {0,\the\numexpr2\relax,...,20}{
\pgfmathparse{cos(\i)}
\edef\temp{\i & \pgfmathresult\noexpand\\} 
\expandafter\globalappendtomacro\expandafter\something\expandafter{\temp}
} 

\begin{tabular}{rr} 
\something
\end{tabular}

但是,我不知道如何在 \pgfmathparse{} 命令中插入参数函数。

答案1

事实证明,下面就是该问题的答案。

我从头开始创建了一个表,通过在列中包含一个值数组来填充函数条目,并通过问题中给出的函数和列对数组X进行评估。Y1Y2

\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.7}
\begin{document}
\pgfplotstablenew[
create on use/X/.style={create col/set list={-3,...,3}}, 
create on use/Y1/.style={create col/expr={2+4/cos(\thisrow{X} r)}}, 
create on use/Y2/.style={create col/expr={-3+3*tan(\thisrow{X} r)}}, 
columns={X,Y1,Y2}, ]{7}{\mytable} 

\pgfplotstabletypeset\mytable
\end{document}

在此处输入图片描述

相关内容