Как набрать такую ​​диаграмму, которая показана на рисунке изотермы?

Как набрать такую ​​диаграмму, которая показана на рисунке изотермы?

PV-диаграмма изотермы с некоторыми участками адиабат

Как можно воссоздать такую ​​диаграмму? с отрезками линий, а не обязательно с точками (V_2, P_5, T_5), ... и т. д.

решение1

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

Где найти больше

Я предлагаю вам просмотреть или прочитать обучающие разделы в руководстве Tikz, либоhtmlизpdf. Также посмотрите все соответствующие команды Tikz, которые я использую.

Основная идея

Давайте сначала рассмотрим основную идею:

  • нарисуйте оси
  • нарисуйте нижнюю кривую
  • укажите точки, необходимые для расстановки точек
  • соедините точки над нижней кривой

Топоры: ничего странного в ней... просто нарисуйте их.

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

Теперь нижняя кривая кажется сложной, хотя это не так, когда вы понимаете концепцию пути Tikz. По сути, вы рисуете линию между двумя точками \draw (1,3) -- (4,1);. Чтобы сделать ее изогнутой, как один из способов сделать это, просто замените --на to[out=,in=]и укажите исходящий и входящий углы. Путь начинается с \drawи заканчивается на ;. Так что давайте выполним еще немного действий на этом пути, прежде чем он закончится. Поставьте a nodeпосле последней нарисованной координаты, чтобы поместить метку T1. Вставьте еще два nodes между начальной и конечной точками, где мы будем использовать только их координаты (A) и (B) и точно настроим их положение на этом пути с помощью [pos=]. Пожалуйста, посмотрите на сброшенный \внутри пути.

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

Нам нужна еще одна точка (C) над (B), поэтому давайте поставим еще одну \node, используя[yshift=]

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

Наконец, давайте соединим (A), (C) и (B) снова какой-нибудь изогнутой линией:

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

Основная идея

Уточнения

Вот изменения и дополнения:

  • определить некоторые стили: crdдля визуализации фиктивных узлов с кругами, lnдля линии
  • запомнить coordinate (X) по оси x для дальнейшего использования
  • удалить текст из узлов A, B и C И использовать crdстиль
  • нарисуйте стрелку и метку для(label)
  • вычислить координату (V4) под (B) повторно используя (X), \nodeпоставить \drawгалочку

Для shifted arrowвашей линии есть несколько способов сделать это. Я использовал ленивый вариант, и вот еще варианты:

  • опуская стрелку
  • использование библиотеки декораций
  • поставьте промежуточную точку между А и В (и отрегулируйте углы, если необходимо)
  • и т. д.

уточнения

Полный код

Этот код создаст две страницы (по одной для каждой среды tikzpicture) рисунков с настроенной геометрией страницы.

\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}

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