如何修饰用 \datavisualization 绘制的参数函数?

如何修饰用 \datavisualization 绘制的参数函数?

我必须绘制一些参数曲线,像下面左边的曲线一样,我想添加小箭头来表示绘图的方向作为参数从 0 增加到 π。我知道如何postaction=decorate像右例所示那样使用 在曲线上添加箭头,但这似乎不适用于 渲染的曲线\datavisualization。还有其他方法吗?

例子

本质上我只是想为左边的图配备那些蓝色箭头。

以下是我针对上图编写的代码:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{datavisualization}
\usetikzlibrary{datavisualization.formats.functions}

\begin{document}

\begin{tikzpicture}[decoration={markings,
  mark=between positions 0 and 1 step 3mm
  with { \arrow[blue]{>};}}]

% Decoration works here...
\draw[red,postaction=decorate] (2,0) to[out=-90,in=85] (4,0);

% ...but is ignored here.
\datavisualization[school book axes,
                   visualize as smooth line=f,
                   all axes={include value/.list={1,-1}},
                   f={style={red,postaction=decorate}}
                   ]
data [format=function,set=f] {
  var t : interval [0:pi] samples 50;
  func x = cos(3 * \value{t}r) * cos(\value{t}r);
  func y = cos(3 * \value{t}r) * sin(\value{t}r);
};
\end{tikzpicture}
\end{document}

编辑:两天后,我意识到我可以通过将函数分成几部分来解决这个问题,如下所示:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{spy}
\usetikzlibrary{datavisualization}
\usetikzlibrary{datavisualization.formats.functions}

\begin{document}

\begin{tikzpicture}[spy using outlines={circle, magnification=5, size=1cm, connect spies}]

\foreach \i in {1,...,6}
\datavisualization[school book axes,
                   visualize as smooth line=f,
                   all axes={include value/.list={1,-1}},
                   f={style={red,->[blue]}}
                   ]
data [format=function,set=f] {
  var t : interval [pi*(\i-.5)/6:pi*(\i+.5)/6] samples 10;
  func x = cos(3 * \value{t}r) * cos(\value{t}r);
  func y = cos(3 * \value{t}r) * sin(\value{t}r);
};

\spy [green] on (.72,0.18) in node (zoom) at (.8, 1);
\end{tikzpicture}
\end{document}

第二次尝试

但这有几个缺点:

  1. 将范围分解为六个部分实际上取决于我所绘制的函数,
  2. 我把这些轴画了 6 次,由于某种原因,这会产生更粗的轴,
  3. 因为箭头尖端不是平的,所以一个功能块的末端和下一个功能块的起点之间存在一些间隙(如间谍节点所示)。

答案1

运行xelatex

\documentclass{standalone}
\usepackage{pstricks-add}
\begin{document}

\psset{unit=5}
\begin{pspicture}(-1.1,-1.1)(1.2,1.2)
\psaxes[Dx=0.5,Dy=0.5]{->}(0,0)(-1.1,-1.1)(1.1,1.1)
\psparametricplot
  [plotpoints=100,algebraic,linecolor=red,
   linewidth=2pt]{0}{Pi}{cos(3*t) * cos(t) | cos(3*t) * sin(t) }
\multido{\rA=0.34+0.50}{6}{%
  \psparametricplot
    [plotpoints=2,algebraic,linecolor=blue,arrows=->,arrowscale=2,
     linewidth=2pt]{\rA}{\rA\space 0.01 add}{cos(3*t) * cos(t) | cos(3*t) * sin(t) }}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容