부드러운 플롯의 임의의 점을 축과 어떻게 연결할 수 있습니까?

부드러운 플롯의 임의의 점을 축과 어떻게 연결할 수 있습니까?

임의의 부드러운 그림(점을 부드럽게 연결하는 것)이 있고 점 사이의 점을 강조하고 싶습니다. 그래프의 점을 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}

priory축에 평행한 선을 사용하여 좌표를 x축과 연결하고 싶습니다 . 내 생각은 이랬어

\draw[dotted] (prior)-- (rel axis cs:0.9,0);

그러나 어떤 이유에서인지 불분명한데, 이것은 올바른 좌표가 아닙니다(조금 오른쪽에 있습니다). 이제 올바른 좌표를 어떻게 평가할 수 있는지 궁금합니다. 이 함수는 0:10내 수학 능력 에 따라 범위를 표시 하므로 x축 길이 .9도 같아야 합니다 . .9그러나 이는 잘못된 것 같습니다. 올바른 좌표가 무엇인지 아는 사람이 있나요? 또는 더 간단합니다. 가능한 가장 짧은 방법으로 점(이전)을 x축과 어떻게 연결할 수 있습니까?

나는 이 질문에 대한 답변에서 제안된 솔루션을 사용해 작업하려고 했습니다.부드러운 pgfplot. 문제는 이전 지점의 y 좌표를 모른다는 것입니다.

완전성을 위해 여기에 생성되는 출력이 있습니다(축의 다른 레이블은 신경 쓰지 마세요).

여기에 이미지 설명을 입력하세요

답변1

그래서 이걸 찾고 있는 거야?

x=0.9가 아닌 이유는 pos=0.9실제로 좌표가 선 길이의 90%에 위치하기 때문입니다. 그리고 선의 시작 부분(즉, 낮은 x 값)에 "위 및 아래"가 많기 때문에 선의 이 부분은 선의 끝 부분(즉, 높은 x 값)보다 "더 깁니다". ) 거의 수평 직선에 가깝습니다.

(완전성을 기하기 위해: 따라서 라인의 x=0.9에 노드를 배치하려는 의도가 있다면 현재 이 기능을 직접 사용하는 것은 불가능 pos하지만 해당 기능에 대한 요청이 이미 있습니다.PGFPlots 추적기. 물론 intersectionsTikZ의 라이브러리를 사용하는 등 간접적으로 수행할 수도 있습니다.)

% 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}

위 코드의 결과를 보여주는 이미지

관련 정보