diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex | 357 |
1 files changed, 326 insertions, 31 deletions
diff --git a/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex b/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex index f92bde8428f..290fbfe9292 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotscolormap.code.tex @@ -1,5 +1,5 @@ %-------------------------------------------- -% $Header: /cvsroot/pgfplots/pgfplots/generic/pgfplots/util/pgfplotscolormap.code.tex,v 1.10 2009/02/13 21:00:47 ludewich Exp $ +% $Header: /cvsroot/pgfplots/pgfplots/generic/pgfplots/util/pgfplotscolormap.code.tex,v 1.15 2009/07/21 18:18:48 ludewich Exp $ % % Package pgfplots % @@ -28,32 +28,43 @@ % This package relies on pgfplots temporary registers and its array % data structure. +% Internal structure: +% the colormap data structure consists of +% - an array 'pgfpl@cm@#1' of RGB color triples, +% - numbers 'pgfpl@cm@#1@h' and 'pgfpl@cm@#1@invh' for the mesh width +% and inverse mesh width. % Creates a new colormap. % % #1 : the name of the color map as string (not as macro). -% #2 : a <color specification> as is expected for a colormap. +% #2 : a <color specification> as is expected for a shading spec of +% pgf. However, the format allows a little bit more freedom: +% - it supports 'rgb255' in addition to pgf, +% - the length is not required (defaults to 1cm for the first and to +% the last length+h for all others). +% - the semicolons can be omitted. % -% Example: \pgfplots@createcolormap{my map}{rgb(0cm)=(1,0,0); rgb(1cm)=(0,1,0); rgb255(1.5cm)=(128,5,255); rgb(2cm)=(0,0,1); gray(3cm)=(3); color(4cm)=(green); } -\def\pgfplotscreatecolormap#{% - \pgfplots@createcolormap -} +% Example: +% \pgfplotscreatecolormap{my map}{rgb(0cm)=(1,0,0); rgb(1cm)=(0,1,0); rgb255(1.5cm)=(128,5,255); rgb(2cm)=(0,0,1); gray(3cm)=(3); color(4cm)=(green); } +% \pgfplotscreatecolormap{my map}{color=(green); color=(red); color=(blue); color=(yellow)} +\def\pgfplotscreatecolormap#{\pgfplots@createcolormap}% \def\pgfplots@createcolormap#1#2{% \edef\pgfplots@createcolormap@name{pgfpl@cm@#1}% \expandafter\pgfplotsarraynewempty\expandafter{\pgfplots@createcolormap@name}% \def\pgfplots@createcolormap@MIN{0}% NORMALIZATION: assume that lower-end is 0pt. - \let\pgfplots@createcolormap@H=\pgfutil@empty \def\pgfplots@createcolormap@MAX{0}% To be computed. \let\pgfplots@createcolormap@LAST=\pgfplots@createcolormap@MIN % PARSE IT: - \pgfplots@createcolormap@#2] + \edef\pgfplots@loc@TMPa{#2}% + % this does also init @H: + \expandafter\pgfplots@createcolormap@startloop\pgfplots@loc@TMPa\pgfplots@EOI \expandafter\pgfplotsarraycheckempty\expandafter{\pgfplots@createcolormap@name}% % sanity checking: \expandafter\pgfplotsarraysizetomacro\expandafter{\pgfplots@createcolormap@name}\to\pgfplots@loc@TMPa \ifcase\pgfplots@loc@TMPa\relax - \pgfplots@error{Sorry, you need to provide at least the two end points of a colormap.}% + \pgfplots@error{Sorry, you need to provide at least two points of a colormap.}% \or - \pgfplots@error{Sorry, you need to provide at least the two end points of a colormap.}% + \pgfplots@error{Sorry, you need to provide at least two points of a colormap.}% \fi % Map the input range [0pt,MAX] linearly to [0,1000] \pgfmathdivide@{\pgfplotscolormaprange}{\pgfplots@createcolormap@MAX}% @@ -65,8 +76,22 @@ \expandafter\let\csname\pgfplots@createcolormap@name @invh\endcsname=\pgfmathresult %\pgfplots@colormap@showdebuginfofor{#1}% } +\def\pgfplots@createcolormap@seth[#1]{% + \pgfmathparse{#1}% + \let\pgfplots@createcolormap@H=\pgfmathresult + \pgfplots@createcolormap@ +}% + +\def\pgfplots@createcolormap@startloop{% + \pgfutil@ifnextchar[% + {\pgfplots@createcolormap@seth}% + {% + \let\pgfplots@createcolormap@H=\pgfutil@empty + \pgfplots@createcolormap@ + }% +}% \def\pgfplots@createcolormap@{% - \pgfutil@ifnextchar]{\pgfutil@gobble}%done! + \pgfutil@ifnextchar\pgfplots@EOI{\pgfutil@gobble}%done! {% \pgfutil@ifnextchar;{\pgfplots@createcolormap@grabsemicolon}% {% @@ -87,15 +112,38 @@ \def\pgfplots@createcolormap@grabsemicolon;{\pgfplots@createcolormap@}% { - \catcode`\;=\active + \catcode`\;=13 \gdef\pgfplots@createcolormap@grabsemicolon@active;{\pgfplots@createcolormap@}% } +\def\pgfplots@createcolormap@next{% + \pgfutil@ifnextchar({% + \pgfplots@createcolormap@next@ + }{% + % determine next step size automatically: + \ifx\pgfplots@createcolormap@H\pgfutil@empty + \expandafter\pgfplotsarraycheckempty\expandafter{\pgfplots@createcolormap@name}% + \ifpgfplotsarrayempty + % first: + \def\pgfmathresult{0sp}% + \else + % second: + \def\pgfmathresult{1cm}% + \fi + \else + % not first: + \pgfmathadd@\pgfplots@createcolormap@LAST\pgfplots@createcolormap@H + \fi + \expandafter\pgfplots@createcolormap@next@\expandafter(\pgfmathresult)% + }% +}% + \def\pgfplots@createcolormap@grabrgb rgb{ \pgfutil@ifnextchar2{% \pgfplots@createcolormap@grabrgb@two@five@five }{% - \pgfplots@createcolormap@grabrgb@ + \let\pgfplots@createcolormap@next@\pgfplots@createcolormap@grabrgb@ + \pgfplots@createcolormap@next }% } \def\pgfplots@createcolormap@grabrgb@(#1)=(#2,#3,#4){% @@ -104,7 +152,11 @@ \def\pgfplots@createcolormap@grabrgb@two@five@five@rescale#1{% \pgfmath@basic@multiply@{0.003921568}{#1}% }% -\def\pgfplots@createcolormap@grabrgb@two@five@five255(#1)=(#2,#3,#4){% +\def\pgfplots@createcolormap@grabrgb@two@five@five255{% + \let\pgfplots@createcolormap@next@\pgfplots@createcolormap@grabrgb@two@five@five@ + \pgfplots@createcolormap@next +} +\def\pgfplots@createcolormap@grabrgb@two@five@five@(#1)=(#2,#3,#4){% \pgfplots@createcolormap@grabrgb@two@five@five@rescale{#2}% \let\pgfplots@loc@TMPa=\pgfmathresult \pgfplots@createcolormap@grabrgb@two@five@five@rescale{#3}% @@ -114,15 +166,23 @@ \edef\pgfplots@loc@TMPa{{\pgfplots@loc@TMPa}{\pgfplots@loc@TMPb}{\pgfmathresult}}% \expandafter\pgfplots@loc@TMPc\pgfplots@loc@TMPa \pgfplots@createcolormap@} -\def\pgfplots@createcolormap@grabgray gray(#1)=(#2){% +\def\pgfplots@createcolormap@grabgray gray{% + \let\pgfplots@createcolormap@next@\pgfplots@createcolormap@grabgray@ + \pgfplots@createcolormap@next +}% +\def\pgfplots@createcolormap@grabgray@(#1)=(#2){% \pgfplots@createcolormap@nextRGB{#1}{#2}{#2}{#2}% \pgfplots@createcolormap@} -\def\pgfplots@createcolormap@grabcolor color(#1)=(#2){% +\def\pgfplots@createcolormap@grabcolor color{% + \let\pgfplots@createcolormap@next@\pgfplots@createcolormap@grabcolor@ + \pgfplots@createcolormap@next +}% +\def\pgfplots@createcolormap@grabcolor@(#1)=(#2){% \pgfutil@colorlet{pgf@tempcol}{#2}% \pgfutil@extractcolorspec{pgf@tempcol}{\pgf@tempcolor}% \expandafter\pgfutil@convertcolorspec\pgf@tempcolor{rgb}{\pgf@rgbcolor}% - \expandafter\pgfplots@createcolormap@grabcolor@\pgf@rgbcolor\relax{#1}}% -\def\pgfplots@createcolormap@grabcolor@#1,#2,#3\relax#4{% + \expandafter\pgfplots@createcolormap@grabcolor@@\pgf@rgbcolor\relax{#1}}% +\def\pgfplots@createcolormap@grabcolor@@#1,#2,#3\relax#4{% \pgfplots@createcolormap@nextRGB{#4}{#1}{#2}{#3}% \pgfplots@createcolormap@} \def\pgfplots@createcolormap@rgbrangeexception#1#2#3{% @@ -150,7 +210,7 @@ \ifdim#4pt>1pt \pgfplots@createcolormap@rgbrangeexception{#2}{#3}{#4}% \fi - % Process 'h': + % compute 'h': \pgfmathparse{#1}% \let\pgfplots@createcolormap@MAX=\pgfmathresult \expandafter\pgfmathsubtract@\expandafter{\pgfmathresult}{\pgfplots@createcolormap@LAST}% @@ -173,13 +233,58 @@ \pgfmathapproxequalto@{\pgfplots@createcolormap@H}{\pgfplots@createcolormap@H@cur}% \ifpgfmathcomparison \else - \pgfplots@error{Sorry, non-uniform colormaps are not yet implemented. Please maintain a uniform distance before offset #1 (in this case, I expected h = \pgfplots@createcolormap@H pt).}% + \pgfmathdivide@{\pgfplots@createcolormap@H@cur}{\pgfplots@createcolormap@H}% + % after this group, \pgfmathresult is + % - empty if no reinterpolation is possible, + % - non-empty if reinterpolation IS possible. In this + % case, it contains the integer multiple of H. + \begingroup + \afterassignment\pgfplots@createcolormap@nextRGB@consider@reinterpolation + \c@pgf@counta=\pgfmathresult\relax + \pgfmath@smuggleone\pgfmathresult + \endgroup + \if\pgfmathresult\pgfutil@empty + % I can't do that yet. + \pgfplots@error{Sorry, non-uniform colormaps are only partially implemented, yet: the provided points must be multiples of the mesh width h=\pgfplots@createcolormap@H pt. Perhaps it helps to provide the mesh widths as argument as in {<name>}{[1cm] <color arguments>}?}% + \else + \let\pgfplots@loc@TMPb=\pgfmathresult + % interpolate missing values using the already fixed H. + % This interpolation procedure is stupid because it works + % only in forward direction - but it works at least. + % For the backwards direction, you can provide the + % meshwidth explicitly at + % \pgfplotscreatecolormap[h]{}{} + \pgfplotsforeachungrouped \c@pgfplots@createcolormap in {1,2,...,\pgfplots@loc@TMPb} {% + \ifdim\c@pgfplots@createcolormap pt=\pgfplots@loc@TMPb pt + % omit the last. + \else + \pgfmathparse{\pgfplots@createcolormap@lastR + \c@pgfplots@createcolormap/\pgfplots@loc@TMPb * ( #2 - \pgfplots@createcolormap@lastR )}% + \let\pgfplots@createcolormap@nextR=\pgfmathresult + \pgfmathparse{\pgfplots@createcolormap@lastG + \c@pgfplots@createcolormap/\pgfplots@loc@TMPb * ( #3 - \pgfplots@createcolormap@lastG )}% + \let\pgfplots@createcolormap@nextG=\pgfmathresult + \pgfmathparse{\pgfplots@createcolormap@lastB + \c@pgfplots@createcolormap/\pgfplots@loc@TMPb * ( #4 - \pgfplots@createcolormap@lastB )}% + % + \edef\pgfplots@loc@TMPa{% + \noexpand\pgfplotsarraypushback{\pgfplots@createcolormap@nextR,\pgfplots@createcolormap@nextG,\pgfmathresult}% + \noexpand\to}% + \expandafter\pgfplots@loc@TMPa\expandafter{\pgfplots@createcolormap@name}% + \fi + }% + \fi \fi \fi - % - % Append values: \def\pgfplots@loc@TMPa{\pgfplotsarraypushback{#2,#3,#4}\to}% \expandafter\pgfplots@loc@TMPa\expandafter{\pgfplots@createcolormap@name}% + \edef\pgfplots@createcolormap@lastR{#2}% + \edef\pgfplots@createcolormap@lastG{#3}% + \edef\pgfplots@createcolormap@lastB{#4}% +}% +\def\pgfplots@createcolormap@nextRGB@consider@reinterpolation#1\relax{% + \ifdim#1pt<0.0005pt + \edef\pgfmathresult{\the\c@pgf@counta}% + \else + \let\pgfmathresult=\pgfutil@empty + \fi }% % Shows debug info about colormap #1 into the console. @@ -200,9 +305,111 @@ \endgroup } +% Copies the contents of the colormap named '#1' into a macro '#2'. +% Invocation of the macro will then re-create the colormap. +% +% #1: color map name +% #2: a macro name +\def\pgfplotscolormapserializetomacro#1#2{% + \begingroup + \pgfplotslistnewempty\pgfplots@serialize@list + \pgfplotsarrayforeachungrouped{pgfpl@cm@#1}\as\elem{% + \expandafter\pgfplotslistpushback\elem\to\pgfplots@serialize@list + }% + \toks0={\expandafter\def\csname pgfpl@cm@#1@h\endcsname}% + \toks1={\expandafter\def\csname pgfpl@cm@#1@invh\endcsname}% + \toks2={% + \pgfplotsarraynewempty{pgfpl@cm@#1}% + \pgfplotslistforeachungrouped\pgfplots@loc@TMPa\as\pgfplots@loc@TMPb{% + \expandafter\pgfplotsarraypushback\pgfplots@loc@TMPb\to{pgfpl@cm@#1}% + }% + }% + \toks3=\expandafter{\pgfplots@serialize@list}% + \t@pgfplots@toka=\expandafter{\pgfplots@serialize@list}% + \xdef\pgfplots@glob@TMPa{% + \the\toks0 {\csname pgfpl@cm@#1@h\endcsname}% + \the\toks1 {\csname pgfpl@cm@#1@invh\endcsname}% + \noexpand\def\noexpand\pgfplots@loc@TMPa{\the\toks3 }% + \the\toks2 + }% + \endgroup + \let#2=\pgfplots@glob@TMPa +}% + +% this is a CONSTANT! Do NOT change it! +% Just read it -- just in case \pgfplotscolormaptopdffunction will use +% a different upper bound in the future. +\def\pgfplotscolormappdfmax{1}% + +% Writes a PDF function of /FunctionType 3 to \pgfplotsretval +% +% The /Domain argument will be set to [ 0 \pgfplotscolormappdfmax ] and bounds will be +% computed accordingly. +% +% #1: the colormap +\def\pgfplotscolormaptopdffunction#1{% + \begingroup + \gdef\pgfplotsretval{% + << + /FunctionType 3 + /Domain [0 \pgfplotscolormappdfmax] + % /Range [0 1 0 1 0 1] % INCOMPATIBLE WITH ACROBAT 6.0 ! + /Functions [ + }% + \c@pgf@counta=0 + \c@pgf@countb=\pgfplotsarraysizeof{pgfpl@cm@#1} % + \advance\c@pgf@countb by-1 + \def\pgfplots@loc@TMPa{}% + \def\pgfplots@loc@TMPb{}% + \def\pgfplots@loc@TMPc{}% + \pgfplotsarrayforeachungrouped{pgfpl@cm@#1}\as\cdata{% + \edef\cdata{\expandafter\pgfplotscolormaptopdffunction@convertcdata\cdata\relax}% + \ifnum\c@pgf@counta>0 + \t@pgfplots@toka=\expandafter{\pgfplotsretval}% + \xdef\pgfplotsretval{% + \the\t@pgfplots@toka + << + /FunctionType 2 + /Domain [0 \pgfplotscolormappdfmax] + /C0 [\pgfplots@loc@TMPa] /C1 [\cdata] /N 1 + >> + }% + \ifnum\c@pgf@counta<\c@pgf@countb\relax + \pgf@xa=\csname pgfpl@cm@#1@h\endcsname pt + \multiply\pgf@xa by\c@pgf@counta\relax + \divide\pgf@xa by1000 % we want [ 0 1 ] not [0 1000] as domain + \edef\pgfplots@loc@TMPb{\pgfplots@loc@TMPb\space \pgf@sys@tonumber\pgf@xa}% + \fi + \edef\pgfplots@loc@TMPc{\pgfplots@loc@TMPc\space 0 1}% + \fi + \let\pgfplots@loc@TMPa=\cdata + \advance\c@pgf@counta by1 + }% + \t@pgfplots@toka=\expandafter{\pgfplotsretval}% + \xdef\pgfplotsretval{% + \the\t@pgfplots@toka + ] + /Bounds [\pgfplots@loc@TMPb] + /Encode [\pgfplots@loc@TMPc] + >> + }% + \endgroup +}% +\def\pgfplotscolormaptopdffunction@convertcdata#1,#2,#3\relax{#1 #2 #3}% + % Invokes '#2' if a color map named '#1' exists and '#3' if no such color map exists. \def\pgfplotscolormapifdefined#1#2#3{\pgfplotsarrayifdefined{pgfpl@cm@#1}{#2}{#3}}% +\def\pgfplotscolormapassertexists#1{% + \pgfplotscolormapifdefined{#1}{}{% + \pgfutil@ifundefined{pgfplotscolormap@errorissued@#1}{% + \pgfplots@error{The colormap `#1' is undefined! Maybe you misspelled it?}% + }{}% + \expandafter\gdef\csname pgfplotscolormap@errorissued@#1\endcsname{1}% + \pgfplotscreatecolormap{#1}{color(0cm)=(blue); color(1cm)=(yellow)}% + }% +} + % Convert a colormap into a PGF shading's color specification for use % in \pgfdeclare*shading. % @@ -218,6 +425,7 @@ % % \pgfuseshading{myshadingA} \def\pgfplotscolormaptoshadingspec#1#2#3{% + \pgfplotscolormapassertexists{#1}% \begingroup \pgfmathparse{#2}% \expandafter\pgfmathdivide@\expandafter{\pgfmathresult}{\pgfplotscolormaprange}% @@ -226,12 +434,12 @@ \pgf@ya=\pgfmathresult pt \c@pgf@counta=0 \let#3=\pgfutil@empty - \pgfplotsarrayforeachungrouped{pgfpl@cm@#1}\as\pgfplots@loc@TMPa{% + \pgfplotsarrayforeachungrouped{pgfpl@cm@#1}\as\pgfplotscolormaptoshadingspec@TMP{% \ifnum\c@pgf@counta=0 - \edef\pgfplots@loc@TMPc{rgb(0pt)=(\pgfplots@loc@TMPa)}% + \edef\pgfplots@loc@TMPc{rgb(0pt)=(\pgfplotscolormaptoshadingspec@TMP)}% \else \pgf@yb=\c@pgf@counta\pgf@ya - \edef\pgfplots@loc@TMPc{rgb(\the\pgf@yb)=(\pgfplots@loc@TMPa)}% + \edef\pgfplots@loc@TMPc{rgb(\the\pgf@yb)=(\pgfplotscolormaptoshadingspec@TMP)}% \fi \ifx#3\pgfutil@empty \t@pgfplots@toka={}% @@ -246,6 +454,16 @@ \endgroup }% +% The same as \pgfplotscolormaptoshadingspec, but this here yields the +% *reversed* sequence. +\def\pgfplotscolormapreversedtoshadingspec#1#2#3{% + \begingroup + \let\pgfplotsarrayforeachungrouped=\pgfplotsarrayforeachreversedungrouped + \pgfplotscolormaptoshadingspec{#1}{#2}{#3}% + \pgfmath@smuggleone#3% + \endgroup +}% + % Expands to the transformed range's right end of every colormap. The left % end is fixed to '0'. @@ -275,6 +493,7 @@ }% }% \def\pgfplotscolormapfind@precomputed[#1:#2][#3]#4#5{% + \pgfplotscolormapassertexists{#5}% \begingroup % Step 0: compute #3 if it is missing and write it into % \pgfplots@loc@TMPa. @@ -286,12 +505,25 @@ \let\pgfplots@loc@TMPa=\pgfmathresult \fi %\message{mapping '#4' into colormap '#5' ... }% - % Step 1: perform lookup. Map #4 into the colormap's range - % using the linear trafo - % phi(#4) = ( #4 - #1 ) / (#2-#1) * colormaprange(#5). - % This, determine the INTERVAL number into which #4 falls. - \pgfmathsubtract@{#4}{#1}% - \expandafter\pgfmathmultiply@\expandafter{\pgfmathresult}{\pgfplots@loc@TMPa}% + \def\pgfplots@loc@samerange{0:1000}% + \ifx\pgfplots@loc@TMPa\pgfplots@loc@samerange + % we have phi(#4) = #4 because #4 in [0:1000]. + \def\pgfmathresult{#4}% + \else + % Step 1: perform lookup. Map #4 into the colormap's range + % using the linear trafo + % phi(#4) = ( #4 - #1 ) / (#2-#1) * colormaprange(#5). + % This, determine the INTERVAL number into which #4 falls. + \pgfmathsubtract@{#4}{#1}% + \expandafter\pgfmathmultiply@\expandafter{\pgfmathresult}{\pgfplots@loc@TMPa}% + \fi + \ifdim\pgfmathresult pt<0pt + \def\pgfmathresult{0}% + \else + \ifdim\pgfmathresult pt>1000pt + \def\pgfmathresult{1000}% + \fi + \fi \let\pgfplotscolormapfind@transformedx=\pgfmathresult \expandafter\pgfmathmultiply@\expandafter{\pgfmathresult}{\csname pgfpl@cm@#5@invh\endcsname}% \let\pgfplotscolormapfind@transformedx@divh=\pgfmathresult @@ -345,5 +577,68 @@ \edef\pgfmathresult{\RED,\GREEN,\BLUE}% }% +% Performs a direct color access into color map '#2' using an index +% '#1'. +% +% #1: an index in the range 0 ... len(#2)-1. +% If it does not match, it will be pruned. If #1 is a real number, it +% will be truncated. +% #2: a color map name. +% +% The resulting RGB value will be written to \pgfmathresult. +\def\pgfplotscolormapgetindex#1#2{% + \pgfplotscolormapassertexists{#2}% + \begingroup + \afterassignment\pgfplots@gobble@until@relax + \c@pgf@counta=#1\relax + \ifnum\c@pgf@counta<0 + \c@pgf@counta=0 + \else + \pgfplotsarraysizetomacro{pgfpl@cm@#2}\to\pgfplotscolormapgetindex@ + \ifnum\c@pgf@counta<\pgfplotscolormapgetindex@\relax + \else + \c@pgf@counta=\pgfplotscolormapgetindex@\relax + \advance\c@pgf@counta by-1 + \fi + \fi + \pgfplotsarrayselect\c@pgf@counta\of{pgfpl@cm@#2}\to\pgfmathresult + \pgfmath@smuggleone\pgfmathresult + \endgroup +} +% Invokes either \pgfplotscolormapfind or \pgfplotscolormapgetindex, +% depending on the value of '/pgfplots/colormap access'. +\def\pgfplotscolormapaccess[#1:#2]{% + \pgfutil@ifnextchar[{% + \pgfplotscolormapaccess@precomputed[#1:#2]% + }{% + \pgfplotscolormapaccess@precomputed[#1:#2][]% + }% +} +\def\pgfplotscolormapaccess@precomputed[#1:#2][#3]#4#5{% + \if m\pgfplots@colormap@access + \pgfplotscolormapfind@precomputed[#1:#2][#3]{#4}{#5}% + \else + \pgfplotscolormapgetindex{#4}{#5}% + \fi +}% + +\pgfutil@definecolor{mapped color}{rgb}{0,0,0}% make sure this color exists. It will be overwritten if needed. \pgfplotscreatecolormap{hot}{color(0cm)=(blue); color(1cm)=(yellow); color(2cm)=(orange); color(3cm)=(red)} + + +% Defines the 'mapped color' on the basis of +% the current color map. +% +% #1: is the value which should be mapped into the color map; it +% is expected in the range [0,1000] (like point meta). +\def\pgfplotscolormapdefinemappedcolor#1{% + \expandafter\pgfplotscolormapaccess\expandafter[\pgfplotspointmetatransformedrange] + [1.0] + {#1} + {\pgfkeysvalueof{/pgfplots/colormap name}} +%\message{Color for current point is RGB '\pgfmathresult' (determined using meta 'phi(\pgfplotspointmeta) = \pgfplotspointmetatransformed')}% + \def\pgfplots@loc@TMPb{\pgfutil@definecolor{mapped color}{rgb}}% + \expandafter\pgfplots@loc@TMPb\expandafter{\pgfmathresult}% +}% + |