我是 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}