使用 pgfplot 将文本放入图表中

使用 pgfplot 将文本放入图表中

使用此代码后,我的节点标记消失了。有没有更好的方法?

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}[domain=0:3]
\begin{axis}[xlabel=Frequency(GHz), ylabel=Output Power(dBm)]
\addplot[color=blue,only marks]
  table[x=x,y=y] {
x         y        
100  12.9        
130  7.7     
140  8
144  5     
150  6.3 
150  12.2 
213  -3.2        

};
\node[red,above] at (axis cs:102,12.9){\small{'12 MTT}};
\node[red,below] at (axis cs:104,12.9){\small{65nm CMOS}};

\node[red,left] at (axis cs:130,7.7){\small{'12 MWCL}};
\node[red,below left] at (axis cs:130,7.7){\small{0.13$\mu$m CMOS}};

\end{axis}
\end{tikzpicture}
\end{document}

答案1

快速解决方法是在选项中设置clip=false或。但是,如果您的绘图数据超出轴限制,或者您有多个带有线条和标记的绘图,这可能会产生不良影响。clip mode=individualaxis

“正确”的方法是将\node命令包装在 中\pgfplotsset{after end axis/.append code={ ... } }。这样,在取消激活剪辑路径后,命令将被执行。

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}

\begin{document}

\begin{tikzpicture}
\begin{axis}[xlabel=Frequency(GHz), ylabel=Output Power(dBm)]
\addplot[color=blue,only marks]
  table[x=x,y=y] {
x         y        
100  12.9        
130  7.7     
140  8
144  5     
150  6.3 
150  12.2 
213  -3.2        

};


\pgfplotsset{
    after end axis/.code={
        \node[red,above] at (axis cs:102,12.9){\small{'12 MTT}};
        \node[red,below] at (axis cs:104,12.9){\small{65nm CMOS}};

        \node[red,left] at (axis cs:130,7.7){\small{'12 MWCL}};
        \node[red,below left] at (axis cs:130,7.7){\small{0.13$\mu$m CMOS}};    
    }
}

\end{axis}

\end{tikzpicture}
\end{document}

答案2

看起来您正在将节点一分为二,以便将文本分为两行。

为此,您可以使用此处描述的方法: 字体命令中多行文本的 tikz 对齐将节点文本放在多行上。

您还可以使用节点的 pin 选项:(您可以在这里找到很好的例子:pgf(plots) 节点阴影/不透明引脚

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}[domain=0:3]
\begin{axis}[xlabel=Frequency(GHz), ylabel=Output Power(dBm)]
\addplot[color=blue,only marks]
  table[x=x,y=y] {
x         y        
100  12.9        
130  7.7     
140  8
144  5     
150  6.3 
150  12.2
213  -3.2        

};

\pgfplotsset{
after end axis/.code={
\node[style={fill=blue,circle,inner sep=0pt,minimum size=4pt},pin={[text=red,text width=3cm,pin edge={black,thick}]180-45:{\small{'12 MTT\\65nm CMOS}}}] at (axis cs:102,12.9) { };
\node[style={fill=blue,circle,inner sep=0pt,minimum size=4pt},pin={[text=red,text width=3cm,pin edge={black,thick}]45:{\small{'12 MWCL\\0.13$\mu$m CMOS}}}] at (axis cs:130,7.7){ };

}
}

\end{axis}
\end{tikzpicture}
\end{document}

结果

相关内容