
Я строю график экспоненциальной функции и мне нужно указать на нем некоторые конкретные значения.
Имя точки (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}