Неправильная отметка на цветовой шкале

Неправильная отметка на цветовой шкале

Я пишу функцию для генерации легенды в Beamer на основе:

  • положение на странице
  • максимальное и минимальное значение
  • цветовая карта для использования

Вот пример:

\documentclass[table]{beamer}

\usepackage{tikz,pgfplots}
\usetikzlibrary{calc}
\usetikzlibrary{backgrounds}

% Colormaps
\pgfplotsset{
    colormap={Legend1}{
        rgb255=(255, 113,   0),
        rgb255=(255, 227,   0),
        rgb255=(170, 255,   0),
        rgb255=( 57, 255,   0),
        rgb255=( 40, 255, 185),
        rgb255=(  0, 199, 221),
        rgb255=( 21, 121, 255),
    }
}

% Len of above/below triangle
\def\len{0.75cm}

% Horizontal Legend
\newcommand{\LegendH}[4]{
    \begin{tikzpicture}[remember picture,overlay]
        % Min/Max/Colormap
        \pgfmathsetmacro{\Min}{#2}
        \pgfmathsetmacro{\Max}{#3}
        \def\colormap{#4}

        % Tick distance
        \pgfmathsetmacro{\XTickDistance}{
            (\Min - \Max) / \pgfplotscolormapsizeof{\colormap}
        }

        % Above/Below
        \ifnum\pdfstrcmp{\colormap}{Legend1}=0
            \definecolor{Lcolor}{RGB}{192, 192, 192}
            \definecolor{Rcolor}{RGB}{255,   0,   0}
            \def\precision{2}
        \fi

        % Axis
        \begin{axis}[
        hide axis, scale only axis, height=0pt, width=0pt, % hide axis
        colormap name = \colormap,
        colorbar sampled,
        colorbar horizontal,
        point meta min=\Min,
        point meta max=\Max,
        colorbar style = {
            name = cb,
            at={(#1)}, anchor=center,
            samples = \pgfplotscolormapsizeof{\colormap} + 1,
            height = 0.5cm,
            width = 10cm,
            xtick style = {draw=none},
            xticklabel style = {
                text width = 2.5em,
                align = center,
                /pgf/number format/.cd,
                fixed,
                fixed zerofill,
                precision = \precision,
                /tikz/.cd
            },
            xtick distance=\XTickDistance,
        }
        ]
        \addplot [draw=none] coordinates {(0,0)};
        \end{axis}

        % Above/Below  triangle
        \foreach \i/\j in {south east/a, north east/b, north west/c, south west/d}
        {\coordinate (\j) at (current colorbar axis.\i);}
        \filldraw[fill=Lcolor] (a) -- ($(a)!0.5!(b)+(\len,0)$) -- (b);
        \filldraw[fill=Rcolor] (c) -- ($(c)!0.5!(d)+(-\len,0)$)-- (d);

        % Background
        \scoped[on background layer]
        \fill [white] ([shift={(-0.25cm,-0.5cm)}]cb.outer south west) rectangle ([shift={(+0.0cm,+0.5cm)}]cb.outer north east);
    \end{tikzpicture}
}   

\begin{document}
    \begin{frame}{Legend}
        \LegendH{$(current page.center)+(0cm, -2cm)$}{1.0}{2.0}{Legend1}
        \LegendH{$(current page.center)+(0cm, +0cm)$}{1.0}{3.0}{Legend1}
    \end{frame}
\end{document}

Вот что я получаю: Результат

Как вы видите, нижняя легенда (между 1 и 2) верна.

Верхний неправильный: должен начинаться на 1 и заканчиваться на 3, деления должны быть 1,00, 1,29, 1,57, 1,86, 2,14, 2,43, 2,71, 3,00.

Я не понимаю, почему такое странное поведение.

Спасибо

Связанный контент