首页 > 技术文章 > 论文插图误差收敛图中斜率三角的绘制方法

yuehq 2016-01-12 22:29 原文

% Mind section '4.17 Custom annotations' of the PGFplots manual Revision 1.12 (2015/01/31).

\documentclass[margin=1cm]{standalone}

 

\usepackage{pgfplots}

 

\pgfplotsset{compat=newest}

 

%%% START MACRO %%%

\newcommand{\slopeTriangle}[5]

{

% #1. A点的横坐标相对位置,xmin+(#1)*(xB-xA)即为A的绝对横坐标

% #2. x方向的长度,既XB-XA的大小

% #3. y方向的偏移量, B点的纵坐标相对位置

% #4. 小三角的斜率

% #5. 绘图可选参数,控制颜色等属性

 

\pgfplotsextra

{

\pgfkeysgetvalue{/pgfplots/xmin}{\xmin}

\pgfkeysgetvalue{/pgfplots/xmax}{\xmax}

\pgfkeysgetvalue{/pgfplots/ymin}{\ymin}

\pgfkeysgetvalue{/pgfplots/ymax}{\ymax}

 

% 通过参数计算各变量.

\pgfmathsetmacro{\xA}{\xmin+(#1)*(\xmax-\xmin)}

\pgfmathsetmacro{\yA}{\ymin+#3*(\ymax-\ymin)}

\pgfmathsetmacro{\xB}{\xmin+(#1+#2)*(\xmax-\xmin)}

\pgfmathsetmacro{\yB}{\yA}

\pgfmathsetmacro{\xC}{\xB}

\pgfmathsetmacro{\yC}{\yB-(\xB-\xA)*#4}

 

% 定义ABC三点的坐标.

\coordinate (A) at (axis cs:\xA,\yA);

\coordinate (B) at (axis cs:\xB,\yB);

\coordinate (C) at (axis cs:\xC,\yC);

 

% 绘制斜率三角.

\draw[#5] (A)-- node[pos=0.5,anchor=south] {1}

(B)-- node[pos=0.5,anchor=west] {#4}

(C)--

cycle;

}

}

%%% END MACRO %%%

 

\begin{document}

\begin{tikzpicture}

\begin{axis}

[

%xtick={-0.1,0,1,1.1},

xlabel=$x$,

%ytick={-0.2,0,2,2.2},

ylabel style={rotate=-90},

ylabel=$y$,

unit vector ratio=2 1 1,

clip=false

]

\addplot[blue,domain=0:1] {-x};

\addplot[red,domain=0:1] {-2*x};

 

\slopeTriangle{0.8}{0.1}{0.8}{1}{blue}; % USE OF MACRO.

\slopeTriangle{0.8}{0.1}{0.65}{2}{red}; % USE OF MACRO.

\end{axis}

\end{tikzpicture}

\end{document}

推荐阅读