如何在 TikZ 或 PGFPlots 上绘制此自由体图

如何在 TikZ 或 PGFPlots 上绘制此自由体图

在此处输入图片描述这不是标题为在 TikZ 中创建自由体图我对如何绘制这个特定的图表感到困惑:

假设我们要描述滑轮上的两个物体,并要绘制 2 个图表,每个箱子一个。它们看起来会像这样:

(向下箭头)m1g

细绳

质量 1(圆圈)

(向上箭头)T

和:

(向下箭头)m2g

细绳

质量 2(圆圈)

(向上箭头)T

以下是我目前得到的信息:

\documentclass[11pt]{article}

\usepackage{tikz}

\usepackage[pdftex]{graphicx}

\usetikzlibrary{quotes}

\begin{document}
\begin{tikzpicture}
\path [draw] (0,2) -- (0,1);
\path (0,2)
    edge [near start, xshift=5pt, "$T$", <-, shorten >=10pt, shorten <=2.5pt] (0,1);
\path (0,1)
    edge [very near end, xshift=5pt, "$m_1g$", ->, shorten <=10pt, shorten >=2.5pt] (0,0);
  \node [circle, fill, radius=2.5pt, label=right:$mass_1$] at (0,1) {};
  \end{tikzpicture}

  \end{tikzpicture}
\end{document}

答案1

\documentclass[11pt]{article}

\usepackage{tikz}

\begin{document}
  \begin{tikzpicture}
     \begin{scope}
      \draw[<-] (0,0) -- node[right]{$W_{m}$}(0,2)
                node[circle,fill,inner sep=3mm,text=white,anchor=south] (m) {$m$};
      \draw (m.north) -- node[right]{$T \uparrow$} +(0,2);
     \end{scope}
     \begin{scope}[shift={(2cm,-8mm)}]
      \draw[<-] (0,0) -- node[right]{$W_{2m}$}(0,2)
                node[circle,fill,inner sep=6mm,text=white,anchor=south] (m) {$m$};
      \draw (m.north) -- node[right]{$T \uparrow$} +(0,2);
     \end{scope}
  \end{tikzpicture}
\end{document}

在此处输入图片描述

解释:

scope围绕其内容形成一个组,以便我们可以对整个组执行操作(如移位)。每个 的node内容与边框相隔inner sep(换句话说,内容和边框之间的距离)。通过调整,inner sep我们可以使节点变大或变小(以便刚好包围内容)。我们可以label通过 来 一个节点(m),以便我们可以稍后使用该节点的锚点(例如m.north),而{m}是节点的内容。最后,表示从水平和垂直方向的点画(m.north) -- +(0,2)一条线。m.north0cm2cm

答案2

两个群众

这是上面两个物体之一的代码。第二个物体与第一个物体一样,但坐标和标签略有不同。

\documentclass[tikz, border=10pt]{standalone}
\usetikzlibrary{quotes}
\begin{document}
  \begin{tikzpicture}
    \path [draw] (0,2) -- (0,1);
    \path (0,2)
        edge [near start, xshift=5pt, "$T$", <-, shorten >=10pt, shorten <=2.5pt] (0,1);
    \path (0,1)
        edge [very near end, xshift=5pt, "$m_1g$", ->, shorten <=10pt, shorten >=2.5pt] (0,0);
      \node [circle, fill, radius=2.5pt, label=right:$mass_1$] at (0,1) {};
  \end{tikzpicture}
\end{document}

答案3

推荐使用 PSTricks 的图表。

\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-node,pst-plot,esvect}

\begin{document}
\begin{pspicture}[arrows=->](8,6)
    \rput(3,3){\Circlenode[radius=.5]{m}{$m$}}
    \rput(6,3){\Circlenode[radius=1]{M}{$2m$}}
    \pnode[0,-1](m){w}  \pnode[0,2](m){t}   \pnode[0,-2](M){W}  \pnode[0,2](M){T}
    \ncline{m}{w}   \ncline{m}{t}   \ncline{M}{W}   \ncline{M}{T}
    \uput[-90](w){$\vv*{W}{m}$} \uput[-90](W){$\vv*{W}{2m}$}    \uput[90](t){$\vv{T}$}  \uput[90](T){$\vv{T}$}
    \psaxes[ticks=none](.5,2)(1.5,3)[$x$,0][$y$,90]
\end{pspicture}
\end{document}

在此处输入图片描述

答案4

另一种可能性是更严格地遵循给定草图的左侧部分。右侧可以很容易地以相同的方式添加...

\documentclass[12pt,tikz,border=3mm]{standalone}
\usetikzlibrary{positioning}

\begin{document}
    \begin{tikzpicture}[
    node distance = 0mm,
every node/.style = {inner sep=2pt}]
\coordinate                     (a)  at (0,0);
\coordinate[below=11mm of a]    (b);
\node[circle,draw,minimum size=3mm, 
      at=(b)]            (c)    {$m$};
    \draw (a) -- (c);
\node[below right=of a]         {$T\uparrow$};
\node[above left =of a]  (d)    {$\downarrow W_m$};
\node[above=of d.north west]    {$\uparrow^+$};
    \end{tikzpicture}
\end{document}

相关内容