¿Cómo escribir un diagrama como el que se muestra en la imagen de una isoterma?

¿Cómo escribir un diagrama como el que se muestra en la imagen de una isoterma?

Diagrama PV de una isoterma con algunos segmentos de adiabats

¿Cómo puedo recrear un diagrama de este tipo? con los segmentos de recta y no necesariamente con los puntos (V_2, P_5, T_5), ..., etc.

Respuesta1

Como indicaron algunos comentarios, primero nos gustaría ver sus propios intentos aquí. Sin embargo, debido a que este diagrama involucra algunos aspectos interesantes, esbozaré un camino hacia su diagrama final. Por cierto, este es más o menos el procedimiento para crear dibujos.

Dónde encontrar más

Sugiero hojear o leer las secciones del tutorial en el manual de Tikz, ya sea comoHTMLdepdf. Busque también todos los comandos Tikz relevantes que estoy usando.

Idea básica

Primero echemos un vistazo a la idea básica:

  • dibujar los ejes
  • dibuja la curva inferior
  • indique los puntos necesarios para sus puntos
  • conectar puntos por encima de la curva inferior

Hachas: nada extraño para ella... solo dibújalas.

    % ~~~ axes ~~~
    \draw[->] (0,0) -- (5,0);
    \draw[->] (0,0) -- (0,5);

Ahora, la curva inferior parece complicada, mientras que no lo es cuando entendiste el concepto de camino de Tikz. Básicamente dibujas una línea entre dos puntos \draw (1,3) -- (4,1);. Para hacerlo curvo, como una forma de hacerlo, simplemente reemplace --y to[out=,in=]especifique los ángulos salientes y entrantes. El camino comienza con \drawy termina con ;. Así que hagamos un poco más de acciones en este camino antes de que termine. Ponga un nodedespués de la última coordenada dibujada para poner la etiqueta T1. Inserte dos nodes más entre el punto inicial y final, donde solo usaremos sus coordenadas (A) y (B) y ajustaremos su posición en esta ruta usando [pos=]. Tenga cuidado con las caídas \dentro del camino.

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

Necesitamos otro punto (C) encima de (B), así que pongamos otro \node, usando un[yshift=]

    % ~~~ put a node//coordinate above (B) ~~~
    \node (C) at ([yshift=6mm]B) {C};

Finalmente, conectemos (A), (C) y (B), nuevamente con alguna línea curva:

    % ~~~ connect A, C and B ~~~~~~~~~
    \draw (A) to[out=140,in=-70] (C) -- (B);

idea básica

Refinamientos

Estos son los cambios y añadidos:

  • definir algunos estilos: crdpara representar los nodos ficticios con círculos, lnpara la línea
  • recuerda coordinate (X) a lo largo del eje x para más tarde
  • eliminar texto de los nodos A, B y C Y usar el crdestilo
  • dibuja con flecha y etiqueta para el(label)
  • calcular la coordenada (V4) en (B) reutilizar (X), poner \nodeuna \drawmarca

Para el shifted arrowde tu línea hay varias formas de hacerlo. Utilicé la variante diferida y aquí hay más opciones:

  • omitiendo la flecha
  • usando la biblioteca de decoraciones
  • coloque un punto intermedio entre A y B (y ajuste los ángulos, si es necesario)
  • etc.

refinamientos

código completo

Este código creará dos páginas (una para cada entorno de tikzpicture) de dibujos con geometría 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}

información relacionada