绘制 PV 函数图

绘制 PV 函数图

我正在尝试在 LaTeX 中绘制下图,但我无论如何也找不到有效的数学函数。这是我的代码,下图是我想要实现的:

在此处输入图片描述

    \begin{figure}
    \centering
    \begin{tikzpicture}
    \def\myfirstfunction{(\x - 4.65) / ((\x - 4.65) * (\x + 0.35)) - 0.2}
    \def\mysecondfunction{(\x - 6) / ((\x - 4.65) * (\x + 0.35)) - 0.2}
    \begin{axis}[
        xlabel={Volume},
        ylabel={Pression},
        axis lines=middle,
        scaled ticks=false,
        xtick=\empty, % Remove x-axis ticks
        ytick=\empty, % Remove y-axis ticks
        grid=none,
        width=10cm,
        height=8cm,
        xmin=0, % Set x-axis minimum to 0
        xmax=5, % Adjust domain to show only the first quadrant
        ymin=0, % Set y-axis minimum to 0
        ymax=2.5,  % Adjust range to show only the first quadrant
        xlabel style={at={(ticklabel* cs:1)},anchor=north west}, % Place xlabel to the bottom
        ylabel style={at={(ticklabel* cs:1)},anchor=south east,rotate= 0} % Place ylabel to the left
    ]
    \addplot[domain=0.1:5,samples=100,smooth,blue] {\myfirstfunction}; % Plot function
    \addplot[domain=0.1:5,samples=100,smooth,magenta] {\mysecondfunction}; % Plot second function
    \end{axis}
    \end{tikzpicture}
    \caption{Graph of $y = \frac{x - 4.65}{(x - 4.65)(x + 0.35)} - 0.2$ and $y = \frac{1}{x} + 1$ in the first quadrant}
    \label{fig:graph}
\end{figure}

任何帮助是极大的赞赏

答案1

看起来你正在混合Tikzpgfplots

这是一种以高度控制的方式定性地绘制这些曲线的方法。基本思想:

  • 只需画线,然后弯曲其中两条线即可to[out=,in=]
  • 使用自定义样式来简化工作和代码

让我们来看看一些细节。我建议在手册在平行下。

绘制线条

例如,x 轴从 (0,0) 开始\draw[->] (0,0) -- +(8,0);,向一侧移动 +(8,0)。这是一个相对运动,在这种情况下,使用 (0,8) 没有任何区别。但是,一旦您的起点在其他地方,这是一个非常好的功能。

该选项[->]只是说:“在两点之间画一条线,起点没有符号,终点有一个箭头。

一次性添加文本

Tikz 遵循路径概念。即,您以 开始路径,\并以 结束路径;中间的所有内容都是所谓的动作(做这个!) 。

因此将上面的命令扩展为

\draw[->] (0,0) -- +(8,0) node[anchor=north,yshift=-3mm]{Volume}; 

方法:

  • 开始\(什么?)draw
  • 连接点如前所述[->]
  • 当到达终点 (8,0) 时添加node
  • 不要将其位置参考到其中心(默认),而要使用其上边缘anchor=north
  • 也做一些shifts
  • 将一些文本放在其位置{Volume}
  • 终于结束这条路;

曲线

其中两条只是直线,遵循与上述相同的方法。

另外两个是弯曲。为了便于控制,您可以用 替换 ,--同时to[out=in=]指定合适的角度。

再次,对于曲线文本,一些节点被添加到路径中。

样式/格式

将您需要的所有内容放在tikzpicture环境的开始处;仅更改这里即可更改整个绘图:

 \begin{tikzpicture}[
    >={Stealth},                        % nicer arrow tip
    lw/.style  ={line width=1.5pt},     % line width for all
    isob/.style={dashed,draw=brown,lw}, % reusing line width lw
    isom/.style={dotted,draw=blue,lw},
    adia/.style={green,lw},
    isot/.style={dashed,draw=blue!80!yellow!50,lw},
 ]

外表

使用类standalone很有用,因为您可以单独生成这些绘图。在目标文档中,您可以使用\includgraphicsfrom 包将此图像作为矢量图形graphicx包含。pdf

结果

\documentclass[10pt,border=3mm,tikz]{standalone}
\usetikzlibrary{arrows.meta}

\begin{document}
 \begin{tikzpicture}[
    >={Stealth},                        % nicer arrow tip
    lw/.style  ={line width=1.5pt},     % line width for all
    isob/.style={dashed,draw=brown,lw}, % reusing line width lw
    isom/.style={dotted,draw=blue,lw},
    adia/.style={green,lw},
    isot/.style={dashed,draw=blue!80!yellow!50,lw},
 ]
    % ~~~ a coordinate ~~~~
    \coordinate (A) at (1.5,6.5);
    
    % ~~~ axes ~~~~~~~~~~
    \draw[->] (0,0) -- +(8,0) node[anchor=north,yshift=-3mm]{Volume};   
    \draw[->] (0,0) -- +(0,8) node[anchor=north east,xshift=-3mm]{Pressure};    
    
    % ~~~ curves ~~~~~~~~~~
    \draw[isob] (A) -- +(5,0) node[anchor=south,pos=0.5]{isobaric};     
    \draw[isom] (A) -- +(0,-4.5) node[anchor=south west]{isometric};    
    \draw[adia] (A) to[out=-80,in=160] 
                    +(3,-4.5) node[yshift=7mm,text=black]{adiabatic};   
    \draw[isot] (A) to[out=-60,in=170] 
                    +(4.5,-3) node[text=black,yshift=8mm,xshift=-5mm]{isothermal};  
    
 \end{tikzpicture}
\end{document}

相关内容