Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I want to overlay Cartesian axes on a polar plot. The vertical axis sits on top of the polar radial (horizontal) tick label. How can I move the tick label(s) so they are below the horizontal axis or otherwise out of the way?

Notice "t" axis overlaying "0"

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{pgfplots.polar} 

\begin{document}
\begin{tikzpicture}
  \begin{polaraxis}[axis on top, xticklabel=$\pgfmathprintnumber{\tick}^\circ$]
    \addplot[fill=green!40,draw=none,domain=-60:60]{1};
    \coordinate (origin) at (axis cs:0,0);
  \end{polaraxis}
  \draw[thick,blue,-stealth] (origin) -- +(0,1) node [above right] {$t$};
  \draw[thick,blue,-stealth] (origin) -- +(1,0) node [midway, above] {$s$};
\end{tikzpicture}
\end{document}
share|improve this question

1 Answer 1

up vote 2 down vote accepted

You can change the alignment of the tick marks by setting ytick align=outside, and adjust the position of the tick labels by setting yticklabel style={ anchor=north, yshift=-2*\pgfkeysvalueof{/pgfplots/major tick length} }:

\documentclass{article}
\usepackage{tikz}
\usepackage{pgfplots}
\usetikzlibrary{pgfplots.polar} 

\begin{document}
\begin{tikzpicture}
  \begin{polaraxis}[
    axis on top,
    xticklabel=$\pgfmathprintnumber{\tick}^\circ$,
    ytick align=outside,
    yticklabel style={
        anchor=north,
        yshift=-2*\pgfkeysvalueof{/pgfplots/major tick length}
    }
    ]
    \addplot[fill=green!40,draw=none,domain=-60:60]{1};
    \coordinate (origin) at (axis cs:0,0);
  \end{polaraxis}
  \draw[thick,blue,-stealth] (origin) -- +(0,1) node [above right] {$t$};
  \draw[thick,blue,-stealth] (origin) -- +(1,0) node [midway, above] {$s$};
\end{tikzpicture}
\end{document}
share|improve this answer
    
I can't get this to work. If I do this in my full paper, I get an error ! Undefined control sequence. \pgfmath@dimen@ ...men@@ #1=0.0pt\relax \pgfmath@ (I see the \makeatletter but it doesn't seem to matter where I put that or if it's not there at all); if I LaTeX either of the MWE files here (including the one I was able to LaTeX a few days ago that I posted) I get ! Package PGF Math Error: You've asked me to divide 195.0' by 0.0', but I can not divide any number by 0.0'.` I have not updated texlive or any TeX packages since I posted this question. –  Liam Jan 14 at 21:00
    
@Liam: Sorry, the \makeatletter wasn't supposed to be there. So just by introducing ytick align=outside, yticklabel style={ anchor=north, yshift=-2*\pgfkeysvalueof{/pgfplots/major tick length} }, you introduce the error? That's really strange. What version of PGFPlots are you using? –  Jake Jan 14 at 21:09
    
Actually, it's just the yshift=... part; it works OK with ytick align only (but of course doesn't look right). My pgfplots version is cc2f2d2dbac8 Tagged version 1.5. I don't use anything newer because I can't find anything that works (I get an error about undefined control sequence \pgfplotsversiondate). –  Liam Jan 14 at 21:28
    
Can you try using yshift=-0.3cm (that corresponds to the default value of major tick length)? –  Jake Jan 14 at 21:31
    
Yes, that works. –  Liam Jan 14 at 21:36

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.