我正在尝试绘制几个极坐标图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}