使用带有图例的 polaraxis 使用 pgfplots 绘制直线

使用带有图例的 polaraxis 使用 pgfplots 绘制直线

我正在尝试在环境中绘制直线polaraxis(这是要求)。因为它们必须经过原点中,参数极坐标方程的形式为$\theta=constant$。然而,在 中pgfplots,似乎只能将图描述为$r=f(\theta)$(使用极坐标中半径和角度的通常符号)。

避免这种情况的一种方法是使用draw如下方法:

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{polar}
\usepackage{tikz}
\usetikzlibrary{positioning}
\usetikzlibrary{calc}

\begin{document}
\begin{tikzpicture}
    \begin{polaraxis}[
        no marks,samples=1000,xmin=0,xmax=90,ymin=0,ymax=1,xtick = {0,22.5,45,68.5},xticklabels={,,},ytick={0,1},
        major tick length=0pt,legend style={at={(0.9,0.9)},font=\footnotesize},
        yticklabel style={anchor=north}
        ] 
        \addplot[domain=-1:0.2, data cs = polarrad,draw=blue, thick]   {0.01*exp(x/0.031)};
        \addlegendentry{blue legend}
        \draw[red,thick] (0,0) -- (100,200);
        \addlegendentry{red legend}
    \end{polaraxis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

我的蓝色曲线是我现有的pgfplots曲线,与图例配合得很好。红色是一条直线,我试图将传说与,它不适用于此代码(tiks 与 pgfplots 的兼容性问题?)。

我首先尝试的另一种解决方案是使用xticks这里绘制的角度{0,22.5,45,68.5};但同样的问题是,我无法将图例与从原点播种并形成所需直线的刻度联系起来。

我一定是忽略了一个简单的技巧,因为这不应该是一个大任务。

答案1

您应该始终设置兼容级别 - 请参阅代码。在新版本的 PGFPlots 中,轴坐标在 内使用axis。我将其更改(100,200)为 60 度的线:((1:60)与 相同(60,1))。以下是如何添加额外的图例条目:

\documentclass[tikz, border=1 cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usepgfplotslibrary{polar}
\begin{document}
    \begin{tikzpicture}
    \begin{polaraxis}[
        no marks,samples=1000,xmin=0,xmax=90,ymin=0,ymax=1,xtick = {0,22.5,45,68.5},xticklabels={,,},ytick={0,1},
        major tick length=0pt,legend style={at={(0.9,0.9)},font=\footnotesize},
        yticklabel style={anchor=north}
        ] 
        \addplot[domain=-1:0.2, data cs = polarrad,draw=blue, thick]   {0.01*exp(x/0.031)};
        \addlegendentry{ blue legend};
        \draw[red,thick] (0,0) -- (1:60);
        \addlegendimage{line legend, red, thick};
        \addlegendentry{red legend};
    \end{polaraxis}
\end{tikzpicture}
\end{document}

带有蓝线和红线的极坐标图

并使用\addplot

  \addplot[red, thick] coordinates{(0,0) (60,1)};

相关内容