在公共坐标系的不同位置绘制多个极坐标图 - Tikz

在公共坐标系的不同位置绘制多个极坐标图 - Tikz

我正在尝试绘制几个极坐标图tikzpicture。这个想法是绘制相同的函数,但针对不同的参数。下面可以看到我想要实现的想法

在此处输入图片描述

虽然我能够在一个极坐标图中绘制所有这些单独的函数,但我不知道如何在一个公共画布上分别绘制它们。

因此,目前我可以制作以下内容

在此处输入图片描述

使用下面的代码

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}

\begin{document}
\begin{tikzpicture}
    \begin{polaraxis}
    \foreach \atwo in {0, 0.4, ..., 2.4}
        \foreach \afour in {-0.6, -0.4, ...,1.8}
            \addplot+[mark=none,domain=0:720,samples=200] 
                {1 + \atwo*(3*cos(x)^2-1)/2 - \afour*(35*cos(x)^4-30*cos(x)^2+3)/8};
    \end{polaraxis}
\end{tikzpicture}
\end{document}

因此,目标是绘制一组轴(a2 , a4)并在每个节点上绘制相应的极坐标图(没有极轴)。

有什么想法可以实现这个目标吗?

答案1

您可以将循环移到polaraxis环境之外,并使用at参数来axis移动轴。不过,外轴和刻度标签必须手动完成。例如:

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
 \foreach[count=\i] \atwo in {0, 0.4, ..., 2.4} {
    \node [below] at (\i,0) {\pgfmathprintnumber[fixed,precision=1]{\atwo}};
    \foreach [count=\j] \afour in {-0.6, -0.4, ...,1.8} {
       \ifnum\i=1
        \node [left] at (0,\j) {\pgfmathprintnumber[fixed,precision=1]{\afour}};
        \fi
        \begin{polaraxis}[
           at={(\i*1cm,\j*1cm)},
           hide axis,
           scale only axis,
           width=1cm,
           name=ax-\i-\j,
           anchor=center
          ]
            \addplot+[mark=none,domain=0:720,samples=200] 
                {1 + \atwo*(3*cos(x)^2-1)/2 - \afour*(35*cos(x)^4-30*cos(x)^2+3)/8};
       \end{polaraxis}
    }}
    \node [draw,fit=(ax-1-1)(ax-7-12)] (ax) {};
    \node [left=1.2cm] at (ax.west) {$\alpha_4$};
    \node [below=1cm] at (ax.south) {$\alpha_2$};
\end{tikzpicture}
\end{document}

相关内容