pgfplots:从点到 y 轴绘制线条的宏

pgfplots:从点到 y 轴绘制线条的宏

看完之后pgfplots:帮助宏将线放到 x 轴,我想知道我是否可以做同样的事情,但用一条线连接该点与其 y 轴投影。所以我尝试修改宏如下:

垂直解决方案(来自上一个问题):

\newcommand{\vertLineFromPoint}[1]{
      \draw[dashed] 
      (#1) -- (#1|-{axis cs:0,\pgfkeysvalueof{/pgfplots/ymin}})
}

水平(对我来说):

\newcommand{\horLineFromPoint}[1]{
   \draw[dashed] 
   (#1) -- (#1-|{axis cs:\pgfkeysvalueof{/pgfplots/xmin},0})
}

这给我的印象是它可以正常工作,但我不知道为什么线在到达 y 轴之前就停止了,所以结果是一条从正确的点到正确的 y 坐标上某个随机点的水平虚线,但横坐标是错误的......好像的值xmin是错误的。

完整代码:

\usepackage{pgfplots}

...

\newcommand{\vertLineFromPoint}[1]{
  \draw[dashed] 
  (#1) -- (#1|-{axis cs:0,\pgfkeysvalueof{/pgfplots/ymin}})
}
\newcommand{\horLineFromPoint}[1]{
  \draw[dashed] 
  (#1) -- (#1-|{axis cs:\pgfkeysvalueof{/pgfplots/xmin},0})
}

...

   \begin{figure}
        \hspace{-0.5cm}
        \begin{tikzpicture}[baseline]
                \begin{semilogxaxis}[
                extra x ticks={3000},
                extra x tick labels={$\omega_p$},
                legend pos = south west,
                title=LP FIlter,
                xlabel={$\omega$ log [rad/s]},
                ylabel={$\phi$ [degrees]},
                xmin= 10^0, xmax=10^5,
                ymin=-90,ymax=90
                ]

                \addplot[blue] table{LPtheoryphase.dat};
                \addplot[mark=*,color=blue] coordinates {(3000,-45)};
                \vertLineFromPoint{3000,-45};
                \horLineFromPoint{3000,-45};
                \end{semilogxaxis}
        \end{tikzpicture}
\end{figure}

但输出如下:

在此处输入图片描述

答案1

如果您使用rel axis cs:0,0而不是 ,则axis cs:0,\pgfkeysvalueof{/pgfplots/ymin}效果很好。请注意,如果没有 \pgfplotsset{compat=1.13}(任何 1.11 或更高版本号都相同),则必须在宏axis cs:之前添加。#1

\documentclass[border=5mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\newcommand{\vertLineFromPoint}[1]{
  \draw[dashed] 
  (#1) -- (#1|-{rel axis cs:0,0})
}
\newcommand{\horLineFromPoint}[1]{
  \draw[dashed] 
  (#1) -- (#1-|{rel axis cs:0,0})
}

\begin{document}
        \begin{tikzpicture}[baseline]
                \begin{semilogxaxis}[
                extra x ticks={3000},
                extra x tick labels={$\omega_p$},
                legend pos = south west,
                title=LP FIlter,
                xlabel={$\omega$ log [rad/s]},
                ylabel={$\phi$ [degrees]},
                xmin= 10^0, xmax=10^5,
                ymin=-90,ymax=90
                ]

%                \addplot [blue] coordinates {(1,0)(1e3,0)(1e5,-100)};
                \addplot[mark=*,color=blue] coordinates {(3000,-45)};
                \vertLineFromPoint{3000,-45};
                \horLineFromPoint{3000,-45};
                \end{semilogxaxis}
        \end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容