ランダムな滑らかな描画(点を滑らかにつないだもの)があり、点の間の点を強調表示したいと考えています。強調表示は、グラフ上の点を x 軸上の座標に接続することによって行われます。
このままにしておきたいMWEはこちら
\documentclass{standalone}
\usepackage{tikz}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[ytick=\empty,xtick=\empty,
axis on top=false,xmin=0, xmax=10, ymin=0, ymax=5,
axis x line=left, axis y line=left, clip=false]
\node at (rel axis cs:1,0) [above, anchor=north west] {$x$};
\node at (rel axis cs:0,1) [above, anchor=west] {$y$};
\addplot[smooth] coordinates {
(0,0)
(2,3)
(5,1.2)
(5.8,4)
(8,3.8)
(10,3.5)
} coordinate [pos=.9] (prior) ;
\end{axis}
\end{tikzpicture}
\end{document}
prior
私は座標をy軸に平行な線でx軸と結び付けたい。私の考えはこうだ
\draw[dotted] (prior)-- (rel axis cs:0.9,0);
しかし、私にはよく分からない理由で、これは正しい座標ではありません (少し右にあります)。では、正しい座標をどうやって評価できるのか疑問に思います。関数は からの範囲をプロットするので、私の数学スキルでは、これが x 軸の長さでもあるはずだ0:10
と判断するでしょう。しかし、これは間違っているようです。正しい座標が何かわかる人はいますか? または、もっと簡単に言うと、ポイント (事前) を x 軸にできるだけ短い方法で接続するにはどうすればよいでしょうか?.9
.9
私はこの質問に対する回答で提案された解決策を試してみました:スムーズなpgfplots問題は、点の y 座標が事前にわからないことです。
完全性のために、これが生成する出力は次のとおりです(軸のラベルが異なることは気にしないでください)
答え1
それでこれを探しているのですか?
x=0.9 でない理由pos=0.9
は、座標が線の長さの 90% に配置されているからです。また、線の始点 (つまり、x 値が低い) には「上下」がたくさんあるため、線のこの部分は、ほぼ水平の直線である線の終点 (つまり、x 値が高い) の部分よりも「長く」なります。
(完全性のために:つまり、もしあなたの意図がx=0.9のライン上にノードを配置することだった場合、これは現在このpos
機能を使用して直接行うことはできませんが、すでにその機能のリクエストがあります。PGFPlots トラッカーもちろん、intersections
TikZ のライブラリなどを使用して間接的に行うこともできます。
% used PGFPlots v1.14
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
% use this `compat' level or higher so there is no need any more to prefix
% TikZ coordinates with `axis cs:'
compat=1.11,
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
xtick=\empty,
ytick=\empty,
xmin=0,
xmax=10,
ymin=0,
ymax=5,
axis lines=center,
% (moved the axis labels here)
xlabel={$x$},
ylabel={$y$},
xlabel style={anchor=north west},
ylabel style={anchor=north east},
]
\addplot [smooth] coordinates {
(0,0)
(2,3)
(5,1.2)
(5.8,4)
(8,3.8)
(10,3.5)
}
coordinate [pos=.9] (prior)
;
% to draw a vertical line from `prior' down to the x axis use the `|-' operator and state an arbitrary x value, but 0 as y value
\draw [dotted] (prior) -- (prior |- 0,0);
\end{axis}
\end{tikzpicture}
\end{document}