使用 pgfplot 绘制简化图

使用 pgfplot 绘制简化图

我想将图表中包含的信息量降至最低。我首先从数据文件 (http://www.sendspace.com/file/wwydju光谱

\documentclass{standalone}

\usepackage {tikz}
\usepackage{pgfplots}
\usetikzlibrary{pgfplots.groupplots}

\definecolor{myorange}{RGB}{238,165,52}

\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=none]
\addplot [color=myorange,style=solid, thick] table[x index=0,y index=1,col sep=space]{spectrum.dat};

\end{axis}

\end{tikzpicture}
\end{document}

但我真的不明白如何访问轴环境之外的图表中的点。我想创建类似 Jean-luc Doumont 书中的图表树、映射和定理(如果你想这样说的话,我知道我只有插值)。

漂亮的图表

图形的位置与正常坐标轴有何关系?

如果有人能帮助我,我将不胜感激:)。

答案1

如果我理解正确的话,您问的是如何使用轴单位放置 TikZ 元素(如节点或箭头)。一个简单的方法是包含元素之内环境axis,因为这使您能够访问坐标系:例如,axis cs:如果您想将一个元素放置在 17.2 GHz、650 mW 处,您会说。\node at (axis cs:17.2,650) ...

如果您clip mode=individualaxis选项中说,那么 TikZ 对象就不会局限于轴区域。

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usepackage{siunitx}
\pgfmathsetseed{1}

\begin{document}
\begin{tikzpicture}[
    declare function={lorentz(\x,\w)=\w^2/(\w^2+(2*\x)^2);}
]
\begin{axis}[
    axis lines*=left,
    xtick={16,17.2,19},
    ytick={0,325,650},
    ymin=0, ymax=650,
    enlarge y limits=false,
    enlarge x limits=false, 
    width=10cm, height=5cm,
    xlabel=Frequency in \si{\GHz},
    ylabel=Output power\\in \si{\milli\W},
    ylabel style={
        rotate=-90,
        align=right,
    },
    tick align=outside,
    tick style=black,
    clip mode=individual,
    x axis line style={opacity=0},
    x tick style={yshift=-0.5cm},
    x tick label style={yshift=-0.5cm},
    y axis line style={xshift=-0.5cm},
    y tick style={xshift=-0.5cm},
    y tick label style={xshift=-0.5cm}
]
\addplot [
    thick,
    orange,
    smooth,
    samples=30,
    domain=15.5:19.5
] {lorentz(x-17.2,0.63)*650};
\addplot [
    only marks,
    samples=20,
    domain=16:19
] {lorentz(x-17.2,0.63)*650+rand*20};

\draw [thick, gray, latex-latex] (axis cs:16.885,325) -- (axis cs:17.515,325)
    node [black!75, pos=0.5, below] {\SI{630}{\MHz}};

\node at (axis cs:17.3,660) [anchor=west] {measured};
\node at (axis cs:17.35,550) [anchor=west, orange!90!black] {calculated};

\draw [yshift=-0.5cm] ({rel axis cs:0,0}-|{axis cs:16,0}) -- ({rel axis cs:0,0}-|{axis cs:19,0});
\end{axis}
\end{tikzpicture}
\end{document}

相关内容