如何绘制图表

如何绘制图表

我想用 LaTeX 创建这样的图表:

在此处输入图片描述

我已经尝试过了pst-全部但我不知道该怎么做。所以我希望你能帮助我。PD:我已经在这个页面上搜索过这个问题,但没有找到任何可以帮助我的东西。

答案1

您可以尝试使用pgfplotstikz。这很容易。

该图可能看起来像这样。

\documentclass{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{pgfplots}
\usepackage{tikz}

\begin{document}
\begin{tikzpicture}
\draw [<->] (0,4) node[left]{$ \text{Im} (z) $} -- (0,0) -- (4,0) node[below]{$ \text{Re} (z) $};
\draw [->] (0,0) -- (3,3)node[above right]{$ z+\beta $};
\draw [->] (0,0) -- (1,2)node[left]{$ \beta $};
\draw [dashed] (0,0) -- (2,1)node[right]{$ z $};
\draw [->] (2,1) -- (3,3);
\draw [dashed] (1,2) -- (3,3);
\end{tikzpicture}
\end{document}

输出

答案2

这里有一个稍微不同的方法,使用 TikZ,它使用向量图书馆的算术calc来放置一些箭头。

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{arrows.meta}
\begin{document}

\begin{tikzpicture}[>=Stealth]

  \coordinate (Q) at (0,0);
  \coordinate (RE) at (4,0);
  \coordinate (IM) at (0,4);

  %% axes
  \draw[arrows=->] (Q) -- (RE) node [pos=1,below] {$Re(z)$};
  \draw[arrows=->] (Q) -- (IM) node [pos=1,left]  {$Im(z)$};

  %% beta vector
  \coordinate (beta) at (1.5,2);
  \draw[arrows=->] (Q) -- (beta) node [pos=1,left] {$\beta$};

  %% z vector
  \coordinate (z) at (2.5,1); 
  \draw[dashed] (Q) -- (z) node[pos=1,right] {$z$};

  %% betaSUMz
  \coordinate (betaSUMz) at ($(beta)+($(z)-(Q)$)$);
  \draw[arrows=->] (Q) -- (betaSUMz);

  %% missing sides
  \draw[dashed] (beta) -- (betaSUMz);
  \draw         (z)    -- (betaSUMz);
\end{tikzpicture}

\end{document}

在此处输入图片描述

答案3

使用\pstricks(可在有的条件下编译pdflatex):

\documentclass[pdf]{standalone}
\usepackage{pstricks-add}
\usepackage{amsmath}
\DeclareMathOperator\re{Re}
\DeclareMathOperator\im{Im}

\begin{document}

$ begin{pspicture}
\psset{ticks=none, labels=none, arrowinset=0.2,arrows =c->, labelsep=3pt}
\psaxes{c->}(0,0)(5,5)[$\re (z)$,-90][$\im (z)$,180]
\pnodes(0,0){O}(3,1.6){Z}(1.6,3){B}(4.6,4.6){C}
\uput[l](B){$\beta $}\uput[r](Z){$z$}\uput[ur](C){$z +\beta $}
\ncline{O}{B}\ncline{O}{C}\ncline{Z}{C}
\psset{linestyle=dashed}
\ncline{O}{Z}\ncline{B}{C}
\end{pspicture} $

\end{document} 

在此处输入图片描述

答案4

MetaPost

input latexmp
setupLaTeXMP(textextlabel=enable, mode=rerun, packages="amsmath");
numeric u; u = .75cm;
pair beta, re, im; beta = (u, 3u); re = (5u, 0); im = (0, 5u);
beginfig(1);
  z = u*(3, 1.5); 
  for M = re, im, beta, z+beta: drawarrow origin -- M; endfor
  drawarrow z--z+beta;
  drawoptions(dashed evenly);
  draw origin--z;
  draw beta -- z+beta;
  label.rt("$\text{Re}(z)$", re); label.lft("$\text{Im}(z)$", im);
  label.lrt("$z$", z); label.lft("$\beta$", beta);
  label.rt("$z+\beta$", z+beta);
endfig;
end.

使用命令行,您可以使用命令获取(PostScript)mpost图形

mpost myfigure.mp

要将其转换为 PDF 图形,请mptopdf对生成的 PostScript 文件应用该实用程序:

mptopdf myfigure.1

如果您不使用命令行,请参考您自己的 TeX 编辑器如何处理 MetaPost 程序。

结果:

在此处输入图片描述

获取 PDF 图形的另一种更直接的方法:将代码插入 LuaLaTeX 程序中,然后使用该luamplib包,如下所示。 (结果相同。)

\documentclass[border=2mm]{standalone}
\usepackage{luamplib, amsmath}
  \mplibtextextlabel{enable}
\begin{document}
  \begin{mplibcode}
     numeric u; u = .75cm;
     pair beta, re, im; beta = (u, 3u); re = (5u, 0); im = (0, 5u);
     beginfig(1);
       z = u*(3, 1.5); 
       for M = re, im, beta, z+beta: drawarrow origin -- M; endfor
       drawarrow z--z+beta;
       drawoptions(dashed evenly);
       draw origin--z;
       draw beta -- z+beta;
       label.rt("$\text{Re}(z)$", re); label.lft("$\text{Im}(z)$", im);
       label.lrt("$z$", z); label.lft("$\beta$", beta);
       label.rt("$z+\beta$", z+beta);
    endfig;
  \end{mplibcode}
\end{document}

相关内容