How do I change the color of one axis in pgfplots?
There's no option to draw the individual lines using different styles at the moment. It's not too hard to add, though. If you copy the following code chunk into your preamble, you can set the axis line styles individually, so you could say
\begin{axis}[
separate axis lines,
first x axis line style=red,
second x axis line style={ultra thick, dashed},
first y axis line style=blue
]
\addplot {rnd};
\end{axis}
to get
Here's the code chunk:
\pgfplotsset{
every first x axis line/.style={},
every first y axis line/.style={},
every first z axis line/.style={},
every second x axis line/.style={},
every second y axis line/.style={},
every second z axis line/.style={},
first x axis line style/.style={/pgfplots/every first x axis line/.append style={#1}},
first y axis line style/.style={/pgfplots/every first y axis line/.append style={#1}},
first z axis line style/.style={/pgfplots/every first z axis line/.append style={#1}},
second x axis line style/.style={/pgfplots/every second x axis line/.append style={#1}},
second y axis line style/.style={/pgfplots/every second y axis line/.append style={#1}},
second z axis line style/.style={/pgfplots/every second z axis line/.append style={#1}}
}
\makeatletter
\def\pgfplots@drawaxis@outerlines@separate@onorientedsurf#1#2{%
\if2\csname pgfplots@#1axislinesnum\endcsname
% centered axis lines handled elsewhere.
\else
\scope[/pgfplots/every outer #1 axis line,
#1discont,decoration={pre length=\csname #1disstart\endcsname, post length=\csname #1disend\endcsname}]
\pgfplots@ifaxisline@B@onorientedsurf@should@be@drawn{0}{%
\draw [/pgfplots/every first #1 axis line] decorate {
\pgfextra
% exchange roles of A <-> B axes:
\pgfplotspointonorientedsurfaceabsetupfor{#2}{#1}{\pgfplotspointonorientedsurfaceN}%
\pgfplots@drawgridlines@onorientedsurf@fromto{\csname pgfplots@#2min\endcsname}%
\endpgfextra
};
}{}%
\pgfplots@ifaxisline@B@onorientedsurf@should@be@drawn{1}{%
\draw [/pgfplots/every second #1 axis line] decorate {
\pgfextra
% exchange roles of A <-> B axes:
\pgfplotspointonorientedsurfaceabsetupfor{#2}{#1}{\pgfplotspointonorientedsurfaceN}%
\pgfplots@drawgridlines@onorientedsurf@fromto{\csname pgfplots@#2max\endcsname}%
\endpgfextra
};
}{}%
\endscope
\fi
}%
\makeatother