# How can I create a polar plot on a Cartesian grid?

I'm currently using tikzpicture and pgfplots to plot this polar function:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\begin{polaraxis}
\end{polaraxis}
\end{tikzpicture}

\end{document}


However, this plots it on a polar axis, which doesn't really make sense in context. (It's defined implicitly as x4 + y4 = x2 + y2 and I'm just using polar coordinates to easily plot it.)

How can I get the same nice graph with the correct Cartesian grid, as Wolfram|Alpha displays it?

I considered \begin{polaraxis}[hide axis] and an additional \begin{axis} but that seems like it would require manual alignment, etc.

Is there a clean way to do this?

• Can you provide a minimum working example please? Dec 16, 2013 at 6:28
• @NictraSavios done. Dec 16, 2013 at 17:04
• @WChargin: Christian's answer is much better, it would be best if you could accept that instead of mine, so I can delete mine.
– Jake
Dec 16, 2013 at 21:35
• @Jake You're right that in this case it's nice to have a dedicated option. However, I appreciate that you can do arbitrary transforms, so it might be good to keep your answer too. Dec 16, 2013 at 23:26

You can tell pgfplots that the input is actually given in polar coordinates using data cs=polar. Pgfplots will automatically transform it to the output coordinate system:

\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}
\begin{axis}[
axis lines=center,
axis equal image,
enlargelimits=true,
]
\end{axis}
\end{tikzpicture}

\end{document} This key can also be used to provide cartesian coordinates in polar axis or other variations.

You can transform the polar coordinates to cartesian using an x filter and a y filter. If you wrap those in a style like this:

\pgfplotsset{
interpret as polar/.style={
x filter/.code=\pgfmathparse{cos(rawx)*rawy},
y filter/.code=\pgfmathparse{sin(rawx)*rawy}
}
}


you can just add interpret as polar to your \addplot options: \documentclass{article}
\usepackage{pgfplots}

\pgfplotsset{
interpret as polar/.style={
x filter/.code=\pgfmathparse{cos(rawx)*rawy},
y filter/.code=\pgfmathparse{sin(rawx)*rawy}
}
}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
axis lines=center,
axis equal image,
enlargelimits=true
]