
Estou traçando uma função exponencial e preciso apontar alguns valores específicos no meu gráfico.
Nome do ponto (x;y)
Ponto N1 (2;50)
Ponto N2 (4;25)
Estou tentando seguirA resposta de Gonzalo Medinamas não estou obtendo nenhum sucesso
\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}
Observe que tentei apenas apontar N1 aqui e mesmo isso não funcionou. Além disso, não quero traçar uma linha só para fazer a interseção, mas não sei como fazer de outra forma.
Algum conselho?
Responder1
Uma alternativa à resposta de Alenanno, com nomes de nós nos nós:
\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}
No código acima considero que o pgfplots
pacote recente está disponível. Caso seja anterior à versão 1.11, então nas coordenadas deve ser adicionado axis cs:
algo como (axis cs:1,25)
.
Responder2
Normalmente você precisaria de cruzamentos para fazer um bom trabalho. Haveria outras soluções, mas as que consigo imaginar exigem ainda mais código do que meras interseções. Ainda assim, no seu caso você nem precisa de cruzamentos. Você pode simplesmente desenhar as linhas.
Saída
Código
\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}