使用兴趣绘图

使用兴趣绘图

帮我用 Hobby 绘制以下情节。
在此处输入图片描述

我尝试绘制它。我的代码是

\begin{tikzpicture}[use Hobby shortcut]
 \draw (-.3 ,1).. (0, 0) .. ( 1.2 , 0 ) .. ( 0 , 0 ) .. (-.3 ,-1);
 \draw (.45, 0) .. ( .9 , 0 ) .. ( .6 , 0 ) .. ( .7 , -0.01);
\draw  (-.15, 1.2).. (-.01, .2) ..(.01, .22).. (.6, .1) .. ( 1.3 , 0 ) .. ( 0 , -.1 ) .. (-.3 ,-1.2);
\node[inner sep=1pt,circle,fill=black] at  ( .7 , -0.01) {};
\end{tikzpicture}

请更正我的代码以获得所需的图。我还想在图旁边写上 HL。

答案1

该图可以按照以下示例进行写出。

  • 箭头作为装饰标记。请参阅回答Alain Matthes 和第 30.5.1 节箭头标记TikZ & PGF 手册

  • 定义样式是为了使\draw命令更加紧凑:

    • 样式/my marks通过选项收集箭头标记设置mark
    • arrow markreversed arrow mark设置箭头尖或反方向的箭头尖。mark选项设置存储在 中/my marks
    • Styledo marks在路径上安装带有箭头标记的装饰。它使用/my marks,因此必须指定 (reversed) arrow mark
  • 标签“HL”位于图纸正下方,与右侧齐平。

  • 顺便说一下,垂直坐标值被翻转,因此单位设置为负值(y=-1bp)。

    (我从 gimp 中的图像位置获取了坐标,其中垂直位置从顶部到底部。)

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{
  decorations,
  decorations.markings,
  hobby,
}

\begin{document}
  \begin{tikzpicture}[
    x=1bp,
    y=-1bp,
    use Hobby shortcut,
    every circle/.style={radius=2},
    thick,
    my marks/.style={},
    arrow mark/.style={
      /my marks/.append style={
        mark=at position #1 with {\arrow[ultra thick]{stealth}},
      },
    },
    reversed arrow mark/.style={
      /my marks/.append style={
        mark=at position #1 with {\arrowreversed[ultra thick]{stealth}},
      },
    },
    do marks/.style={
      decorate,
      postaction={
        decoration={
          markings,
          /my marks,
        },
        decorate,
      },
    },
  ]
    \fill (60,57) circle;
    \draw[
      arrow mark=.14,
      do marks,
    ]
      (34,56)..(53,44)..(64,45)..(73,57)..(60,68)..(49,61)..(54,53)
    ;
    \draw[
      arrow mark=1,
      do marks,
      shorten >=1pt,
    ]
      (134,83)..(117,75)..(86,91)..(51,103)..(1,58)..(53,12)..(87,18)..
      (113,25)..(148,0)
    ;
    \fill (118,50) coordinate (cross) circle;
    \draw[
      arrow mark=.06,
      reversed arrow mark=.24,
      reversed arrow mark=.78,
      arrow mark=.92,
      do marks,
    ]
      (152,86)..(cross)..(59,26)..(21,56)..(55,84)..(cross)..(152,11)
    ;
    \node[
      below left,
      inner sep=0pt,
      outer sep=0pt,
      font=\sffamily,
    ] at (current bounding box.south east) {HL};
  \end{tikzpicture}
\end{document}

结果

相关内容