Аннотирование определенных точек на графике tikz

Аннотирование определенных точек на графике tikz

Я строю график экспоненциальной функции и мне нужно указать на нем некоторые конкретные значения.

Имя точки (x;y)

Точка N1 (2;50)

Точка N2 (4;25)

Я пытаюсь следоватьОтвет Гонсало Мединыно я не добиваюсь никакого успеха

\begin{figure}[H]
\begin{tikzpicture}[scale=1.5]
\begin{axis}[
    domain=10:1,
    axis lines=left,
    grid=both,
    clip=false,
    xlabel=$Tempo (dias)$,
    ylabel=$Atividade (Ci)$
]
\addplot[name path=curve,smooth,thick,black]{100*exp(-x*ln(2)/2)};
\addplot[name path=line,smooth,dashed,red]{50};
\path[name intersections={of=curve and line, by={a}}];
\draw[dashed] 
  (a) -- (a|-{axis cs:0,0}) node[anchor=north,font=\tiny] {$N=1$};
\node[fill,inner sep=1.5pt] at (a) {};
\end{axis}
\end{tikzpicture}
\end{figure}

Обратите внимание, что я попытался указать только N1 здесь, и даже это не работает. Кроме того, я не хочу строить линию только для того, чтобы сделать пересечение, но я не знаю, как сделать это по-другому.

Любой совет?

решение1

Альтернатива ответу Alenanno, с именами узлов в узлах:

\documentclass[margin=10pt]{standalone}
    \usepackage{pgfplots}
    \pgfplotsset{compat=1.13}

\begin{document}
    \begin{tikzpicture}[scale=1.5,
X/.style = {circle, fill=black, inner sep=1.5pt, 
            label={[font=\scriptsize]above right:#1},
            node contents={}}
                    ]
\begin{axis}[
    domain=10:1,
    axis lines=left,
    grid=both,
    clip=false,
    xlabel=\textit{Tempo (dias)},
    ylabel=\textit{Atividade (Ci)}
]
\addplot[smooth,thick,black]{100*exp(-x*ln(2)/2)};
%
\draw[dashed] (1,50) -- (2,50) node[X={$N=1$}] -- (2,3);
\draw[dashed] (1,25) -- (4,25) node[X={$N=2$}] -- (4,3);
\end{axis}
    \end{tikzpicture}
\end{document}

В коде выше я считаю, что доступен последний pgfplotsпакет. В случае, если он до версии 1.11, то в координатах следует добавить axis cs:, что-то вроде (axis cs:1,25).

введите описание изображения здесь

решение2

Обычно для хорошей работы нужны пересечения. Есть и другие решения, но те, которые я могу придумать, требуют даже больше кода, чем просто пересечения. Тем не менее, в вашем случае вам даже не нужны пересечения. Вы можете просто нарисовать линии.

Выход

введите описание изображения здесь

Код

\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}

\pgfplotsset{compat=1.13}

\tikzset{
    dot/.style={fill=black, circle, inner sep=1.5pt},
    nod/.style={sloped, at start, xshift=3mm, font=\scriptsize, above},
}

\begin{tikzpicture}[scale=1.5]
\begin{axis}[
    domain=10:1,
    axis lines=left,
    grid=both,
    clip=false,
    xlabel=Tempo (dias),
    ylabel=Atividade (Ci)
]
\addplot[name path=curve,smooth,thick,black]{100*exp(-x*ln(2)/2)};

\draw[dashed] (2,5) -- (2,50) coordinate[dot] node[nod] {$N=1$} -- (1,50);

\draw[dashed] (4,5) -- (4,25) coordinate[dot] node[nod] {$N=2$} -- (1,25);
\end{axis}
\end{tikzpicture}
\end{document}

Связанный контент