我试图从图表顶部到底部绘制一条直线,而不定义具体的 y 值,而只表示 y 轴的 0% 到 100%。但是,x 值应在图表的坐标系中设置。
我正在运行compat=1.15
,所以不需要axis cs:
在坐标前添加以让它们与真实图形相匹配。
我认为我需要使用两个不同的坐标系。对于 x 值,默认坐标系axis cs
很方便,但对于 y 值,我更需要axis description cs
。请注意,pgfplots 中的默认图表在每侧都有一点边距,因此即使我手动输入 y 值,线条也不会从最顶部到最底部,而它应该是这样的。
从 MWE 中可以看出,设置小于最小绘图值的值会产生正确的结果,因此可能的破解方法可能是仅使用极端数字,但我不喜欢这个想法。
平均能量损失
\documentclass{article}
\usepackage{pgfplots, filecontents}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel = {x},
ylabel = {y},
]
\addplot+[mark=none, smooth] plot coordinates {
(200, 20)
(210, 22)
(220, 23)
(230, 25)
(240, 35)
(250, 40)
(260, 36)
(270, 27)
(280, 20)
(290, 19)
(300, 15)
};
\draw (250, 0) -- (250, 40);
\end{axis}
\end{tikzpicture}
\end{document}
答案1
这可以通过
\draw (current axis.south-|<x>, 0) -- (current axis.north-|<x>,0);
或者像 Stefan Pinnow 那样评论和
\draw (<x>,0 |- {axis description cs:0,0}) -- (<x>,0 |- {axis description cs:0,1});
两者都使用perpendicular
坐标系,它取两个点(我们称它们为p
和q
),从一个点绘制一条垂直线,从另一个点绘制一条水平线,并返回这些线的交点。隐式语法可以用作:(p-|q)
或(p|-q)
。
的意思-|
是我想使用-
来自 的水平线 ( )和来自 的p
垂直线 ( ) 的交点。同样, 的意思相同,但反过来。原则上,这意味着对于我使用 的坐标和的坐标,丢弃 的和的。|
q
|-
-|
y
p
x
q
x
p
y
q
梅威瑟:
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xlabel = {x},
ylabel = {y},
]
\addplot+[mark=none, smooth] plot coordinates {
(200, 20)
(210, 22)
(220, 23)
(230, 25)
(240, 35)
(250, 40)
(260, 36)
(270, 27)
(280, 20)
(290, 19)
(300, 15)
};
\draw (current axis.south-|240, 0) -- (current axis.north-|240,0);
\draw (260,0 |- {axis description cs:0,0}) -- (260,0 |- {axis description cs:0,1});
\end{axis}
\end{tikzpicture}
\end{document}
导致