看完之后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}