我正在使用该polar
库来pgfplots
绘制如下图形:
\begin{tikzpicture}
\begin{polaraxis}
\addplot[mark = none, domain = 0.4:12, samples = 600, data cs = polarrad]{sin(x)};
\end{polaraxis}
\end{tikzpicture}
如手册中所述,该函数使用弧度,但轴标签仍以度为单位绘制。我想要 0π、π/6、… 11π/6 标签,而不是 0、30、…、330 刻度标签。我确信解决方案一定非常简单,但我还没有找到它。
答案1
我把分数稍微简化了一点
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.7}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[
xticklabel={
\pgfmathparse{\tick/180}
\pgfmathifisint{\pgfmathresult}{$\pgfmathprintnumber[int detect]{\pgfmathresult}\pi$}%
{$\pgfmathprintnumber[frac,frac denom=6,frac whole=false]{\pgfmathresult}\pi$}
}
]
\addplot[mark = none, domain = 0.4:12, samples = 600, data cs = polarrad]{sin(x)};
\end{polaraxis}
\end{tikzpicture}
\end{document}
\ifnum
您可以在整数检查中引入另一个来删除 1 1pi
,但对我来说这似乎有点过头了。在我看来,它的可读性很好。
答案2
您还可以跳过 pgf 数学并简单地自己指定 xticklabels(注意复数):
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepgfplotslibrary{polar}
\begin{document}
\begin{tikzpicture}
\begin{polaraxis}[
xticklabels={,0,$\frac\pi6$,$\frac\pi3$,$\frac\pi2$,$\frac{2\pi}3$,$\frac{5\pi}6$,
$\pi$,$\frac{7\pi}6$,$\frac{4\pi}3$,$\frac{3\pi}2$,$\frac{5\pi}3$,$\frac{11\pi}6$}
]
\addplot[mark = none, domain = 0.4:12, samples = 600, data cs = polarrad]{sin(x)};
\end{polaraxis}
\end{tikzpicture}
\end{document}
我不确定 0 之前的第一个标签会发生什么。(您可能还想,sin(deg(x))
因为参数仍然被解释为度数。)