我正在尝试获取给定颜色图的反转版本以用于绘图的颜色条中。
下面的代码专门针对黑白颜色图实现了这一点。但是,我正在寻找一种更通用的方法,只需反转颜色图的名称即可。
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[colorbar, colormap={}{ gray(0cm)=(1); gray(1cm)=(0);}]
\addplot[mesh,thick] {x^2};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[colorbar, colormap={}{ gray(0cm)=(0); gray(1cm)=(1);}]
\addplot[mesh,thick] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}
答案1
编辑
最新版本的 pgfplots 允许以更简单的形式回答问题,而无需诉诸自定义宏编码。以下是基于最新版本的答案pgfplots
:
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}
\begin{document}
\pgfplotsset{
%colormap={X}{ gray(0cm)=(1); gray(1cm)=(0);},
colormap/winter,
}
\begin{tikzpicture}
\begin{axis}[colorbar]
\addplot[mesh,thick] {x^2};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[colorbar,
colormap={reverse winter}{
indices of colormap={
\pgfplotscolormaplastindexof{winter},...,0 of winter}
},
]
\addplot[mesh,thick] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}
有关此方法的详细信息可以在 pgfplots 手册的“基于其他颜色图构建颜色图”小节中找到。
这是原始答案
可以按如下方式编写这样的实用宏。
请注意,这不附带任何保证,即,如果内部结构有时发生变化,这将会损坏(尽管它们不太可能很快发生变化)。
\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{colormaps}
\makeatletter
\def\customrevertcolormap#1{%
\pgfplotsarraycopy{pgfpl@cm@#1}\to{custom@COPY}%
\c@pgf@counta=0
\c@pgf@countb=\pgfplotsarraysizeof{custom@COPY}\relax
\c@pgf@countd=\c@pgf@countb
\advance\c@pgf@countd by-1 %
\pgfutil@loop
\ifnum\c@pgf@counta<\c@pgf@countb
\pgfplotsarrayselect{\c@pgf@counta}\of{custom@COPY}\to\pgfplots@loc@TMPa
\pgfplotsarrayletentry\c@pgf@countd\of{pgfpl@cm@#1}=\pgfplots@loc@TMPa
\advance\c@pgf@counta by1 %
\advance\c@pgf@countd by-1 %
\pgfutil@repeat
%\pgfplots@colormap@showdebuginfofor{#1}%
}%
\makeatother
\begin{document}
\pgfplotsset{
%colormap={X}{ gray(0cm)=(1); gray(1cm)=(0);},
colormap/winter,
}
\begin{tikzpicture}
\begin{axis}[colorbar]
\addplot[mesh,thick] {x^2};
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
%\customrevertcolormap{X}
%\customrevertcolormap{jet}
\customrevertcolormap{winter}
\begin{axis}[colorbar]
\addplot[mesh,thick] {x^2};
\end{axis}
\end{tikzpicture}
\end{document}