
Responder1
Como alguns comentários afirmaram, gostaríamos de ver suas próprias tentativas aqui, primeiro. No entanto, como este diagrama envolve alguns aspectos interessantes, esboçarei um caminho até o seu diagrama final. Aliás, esse é mais ou menos o procedimento para fazer desenhos.
Onde encontrar mais
Sugiro folhear ou ler as seções do tutorial no manual do Tikz, comoHTMLdepdf. Procure também todos os comandos Tikz relevantes que estou usando.
Ideia básica
Vamos dar uma olhada na ideia básica primeiro:
- desenhe os eixos
- desenhe a curva inferior
- indique os pontos necessários para seus pontos
- conectar pontos acima da curva inferior
Machados: nada de estranho para ela... apenas desenhe-os.
% ~~~ axes ~~~
\draw[->] (0,0) -- (5,0);
\draw[->] (0,0) -- (0,5);
Agora, a curva inferior parece complicada, embora não seja quando você entendeu o conceito de caminho do Tikz. Basicamente você desenha uma linha entre dois pontos \draw (1,3) -- (4,1);
. Para torná-lo curvo, basta substituir --
por to[out=,in=]
e especificar os ângulos de saída e entrada. O caminho começa \draw
e termina com ;
. Então, vamos fazer mais algumas ações nesse caminho antes que ele termine. Coloque um node
após a última coordenada desenhada para colocar o rótulo T1. Insira mais dois node
s entre o ponto inicial e final, onde usaremos apenas suas coordenadas (A) e (B) e ajuste sua posição neste caminho usando [pos=]
. Por favor, observe o que caiu \
dentro do caminho.
% ~~~ lower curve: a path with many actions ~~~~~
\draw (1,3) to[out=-60,in=170] % start point, towards ...
node[pos=.8] (A) {A} % basically, store coordinates
node[pos=.6] (B) {B} % (A) and (B)
(4,1) node[anchor=west]{$T_1$} % end point + some node as label
; % end of this path
Precisamos de um outro ponto (C) acima de (B), então vamos colocar outro \node
, usando um[yshift=]
% ~~~ put a node//coordinate above (B) ~~~
\node (C) at ([yshift=6mm]B) {C};
Finalmente, vamos conectar (A), (C) e (B), novamente com alguma linha curva:
% ~~~ connect A, C and B ~~~~~~~~~
\draw (A) to[out=140,in=-70] (C) -- (B);
Refinamentos
Estas são as alterações e complementos:
- defina alguns estilos:
crd
para renderizar os nós fictícios com círculos,ln
para a linha - lembre-se
coordinate (X)
ao longo do eixo x para mais tarde - remova o texto dos nós A, B e C E use o
crd
estilo - desenhe com seta e rótulo para o
(label)
- calcule a coordenada (V4) em (B) reutilizando (X), coloque um
\node
,\draw
uma marca
Para a shifted arrow
sua linha existem várias maneiras de fazer isso. Usei a variante preguiçosa e aqui estão mais opções:
- omitindo a flecha
- usando a biblioteca de decorações
- coloque um ponto intermediário entre A e B (e ajuste os ângulos, se necessário)
- etc.
Código completo
Este código criará duas páginas (uma para cada ambiente tikzpicture) de desenhos com geometria de página ajustada.
\documentclass[10pt,border=3mm,tikz]{standalone}
\begin{document}
% ~~~ (I) basic ideas ~~~~~~~~~~~~~~~
\begin{tikzpicture}
% ~~~ axes ~~~
\draw[->] (0,0) -- (5,0);
\draw[->] (0,0) -- (0,5);
% ~~~ lower curve: a path with many actions ~~~~~
\draw (1,3) to[out=-60,in=170] % start point, towards ...
node[pos=.8] (A) {A} % basically, store coordinates
node[pos=.6] (B) {B} % (A) and (B)
(4,1) node[anchor=west]{$T_1$} % end point + some node as label
; % end of this path
% ~~~ put a node//coordinate above (B) ~~~
\node (C) at ([yshift=6mm]B) {C};
% ~~~ connect A, C and B ~~~~~~~~~
\draw (A) to[out=140,in=-70] (C) -- (B);
\end{tikzpicture}
% ~~~ (II) fine print ~~~~~~~~~~~~~~~
\begin{tikzpicture}[ % some self-defined styles
crd/.style={minimum size=1mm, % puts the dots
inner sep=0pt,circle,draw,fill},
ln/.style={blue, line width=1.5pt},
]
% ~~~ axes ~~~
\draw[->] (0,0) -- (5,0) coordinate (X);
\draw[->] (0,0) -- (0,5);
% ~~~ lower curve: a path with many actions ~~~~~
\draw (1,3) to[out=-60,in=170] % start point, towards ...
node[pos=.8,crd] (A) {} % basically, store coordinates
node[pos=.6,crd] (B) {} % (A) and (B)
(4,1) node[anchor=west]{$T_1$} % end point + some node as label
; % end of this path
% ~~~ put a node//coordinate above (B) ~~~
\node[crd] (C) at ([yshift=6mm]B) {};
% ~~~ connect A, C and B ~~~~~~~~~
\draw[ln,->] (A) to[out=140,in=-70] (C);
\draw[ln] (C) -- (B);
% ~~~ put some label ~~~~~~~~~~~
\draw[<-] (C) -- +(45:15mm) node[anchor=west] {$(V_4, P_4, T_4)$};
% ~~~ perpendicular below points ~~~~~~~
\coordinate (V4) at (B |- X); % projection onto x-axis
\node[yshift=-3mm] at (V4) {$V_4$}; % the label
\draw (V4) -- +(0,.2); % the tick
\end{tikzpicture}
\end{document}