使用此代码后,我的节点标记消失了。有没有更好的方法?
\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=individual
axis
“正确”的方法是将\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}