addplot 函数的简写

addplot 函数的简写

我是 LaTeX 的初学者。我想为下面的 addplot 调用创建简写:

\begin{tikzpicture}
\begin{axis}[axis y line=center,axis x line=middle, xmin=-1, xmax=4, ymin=-3/2, ymax=3/2]
  \addplot[] {4/9*x^2 - 4/3*x};
  \addplot+[only marks] 
    coordinates {(0,0) (3/2,-1) (3,0)}
    \addplot[mark=*] coordinates {(0,0)} node[pin={[pin edge={red,thick}]240:{$(0,0)$}}] {} ;
    \addplot[mark=*] coordinates {(3/2,-1)} node[pin={[pin edge={red,thick}]350:{$(\frac{3}{2},-1)$}}] {} ;
    \addplot[mark=*] coordinates {(3,0)} node[pin={[pin edge={red,thick}]310:{$(3,0)$}}] {} ;
;
\end{axis}
\end{tikzpicture}

因此我可以调用类似的方法\mynewcommand{(0,0)}{(0,0}{red}{100}来代替冗长的 addplot 调用,并将参数(分别为坐标、固定文本、颜色和角度)替换到长函数中\addplot

我尝试过这样做\newcommand

\newcommand{\mynewcommand}[4]{\addplot[mark=*] coordinates {#1} node[pin={[pin edge={#3,thick}]#4:{$#2$}}] {} ;}

但这无法编译,有人知道为什么吗?有人知道如何创建这样的命令吗?

答案1

您建议的命令运行正常,如果您在使用该命令时收到错误,我只能猜测您以某种方式错误地使用了它。但是您的代码片段中有一个错误,即第二个命令末尾缺少一个分号\addplot,即

\addplot+[only marks] 
    coordinates {(0,0) (3/2,-1) (3,0)}; % <- that semicolon wasn't there

无论如何,您并不需要那个,因为您还要使用以下三个 s 在相同的位置添加标记addplot

下面是一个工作示例中使用建议命令(尽管已重命名)的代码:

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\newcommand{\addmarkandpin}[4]{\addplot[mark=*] coordinates {#1} node[pin={[pin edge={#3,thick}]#4:{$#2$}}] {};}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis y line=center,axis x line=middle, xmin=-1, xmax=4, ymin=-3/2, ymax=3/2]
  \addplot[samples=100] {4/9*x^2 - 4/3*x};

  \addmarkandpin{(0,0)}{(0,0)}{red}{240}
  \addmarkandpin{(3/2,-1)}{(\frac{3}{2},-1)}{red}{350}
  \addmarkandpin{(3,0)}{(3,0)}{red}{310}
\end{axis}
\end{tikzpicture}
\end{document}

只是因为。这是一个使用\node而不是来放置标记的版本\addplot。正如所写,它需要\pgfplotsset{compat=1.11}或更新版本,因为这使axis cs坐标系成为默认坐标系。使用较旧的兼容设置,您需要(axis cs:#1)。输出与上面的输出类似。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\newcommand{\addmarkandpin}[4]{\node[fill,inner sep=0pt,outer sep=2pt,circle,minimum size=5pt,pin={[pin edge={#3,thick}]#4:{$#2$}}] at (#1) {};}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis y line=center,axis x line=middle, xmin=-1, xmax=4, ymin=-3/2, ymax=3/2]
  \addplot[samples=100] {4/9*x^2 - 4/3*x};

  \addmarkandpin{0,0}{(0,0)}{red}{240}
  \addmarkandpin{3/2,-1}{(\frac{3}{2},-1)}{red}{350}
  \addmarkandpin{3,0}{(3,0)}{red}{310}
\end{axis}
\end{tikzpicture}
\end{document}

相关内容