Cor da grade mapeada para barra de cores pgfplots

Cor da grade mapeada para barra de cores pgfplots

Estou tentando usar uma variação da cor mapeada para um gráfico de contorno preparado. A cor da linha está ajustada corretamente usando draw color=mapped color!50!black, mas não consigo usar o valor da cor mapeada para a grade da barra de cores. O exemplo abaixo produz linhas de grade pretas, mas eu gostaria que elas tivessem um tom mais escuro da cor correspondente ao valor do tick.

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.11}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[colorbar,colorbar style={grid,grid style={color=mapped color!50!black}}]
        \addplot[contour prepared,contour/draw color=mapped color!50!black]
            table {
                2 2 0.8
                0.857143 2 0.6
                1 1 0.6
                2 0.857143 0.6
                2.5 1 0.6
                2.66667 2 0.6
                0.571429 2 0.4
                0.666667 1 0.4
                1 0.666667 0.4
                2 0.571429 0.4
                3 0.8 0.4
                0.285714 2 0.2
                0.333333 1 0.2
                1 0.333333 0.2
                2 0.285714 0.2
                3 0.4 0.2
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

Responder1

Uma grade sempre terá a mesma cor, não sendo possível alterar suas cores dependendo do valor atual. Mas há uma maneira diferente.

Minha ideia é que pudéssemos desenhardoisbarras de cores umas sobre as outras: uma com o sombreamento (ou seja, a sua como está) e outra com colorbar sampled lineum marcador de barra. A ideia principal é modificar colorbar/draw, uma chave de código que gera toda a barra de cores quando é executada:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.11}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            colorbar,
            colorbar/draw/.append code={%
                % the /.append code means that colorbar/draw is
                % executed as usual -- and we execute the following
                % code as well, which draws a _second_ colorbar on top
                % of it:
                \pgfplotsset{
                    colorbar sampled line={
                        samples at={0,0.2,0.4,0.6,0.8},
                        scatter,
                        scatter/use mapped color={draw=mapped color!50!black},
                        only marks,
                        mark=-, 
                        mark size=\pgfkeysvalueof{/pgfplots/colorbar/width}/2,
                        line width=2pt,
                    },
                    %
                    % do not typeset labels twice:
                    hide axis,
                    %
                    % colorbar sampled line overwrites (resets)
                    % colorbar/draw.
                    %
                    % Execute it to draw the result:
                    colorbar/draw,
                }%
            },%
        ]
        \addplot[contour prepared,contour/draw color=mapped color!50!black]
            table {
                2 2 0.8
                0.857143 2 0.6
                1 1 0.6
                2 0.857143 0.6
                2.5 1 0.6
                2.66667 2 0.6
                0.571429 2 0.4
                0.666667 1 0.4
                1 0.666667 0.4
                2 0.571429 0.4
                3 0.8 0.4
                0.285714 2 0.2
                0.333333 1 0.2
                1 0.333333 0.2
                2 0.285714 0.2
                3 0.4 0.2
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

As camadas gráficas poderiam ser melhores, mas parece estar bem.


EDITAR

Você pediu melhorias em relação aos gráficos em camadas. A boa notícia é: minha solução inicial funcionaria imediatamente adicionando \pgfplotsset{set layers}- isso classificaria automaticamente as camadas. Infelizmente, parece haver um bug no pgfplots, o que significa que os gráficos em camadas quebram as barras de cores :-( Eu cuidarei desse bug.

Esse bug me levou a uma solução alternativa. Esta solução alternativa depende do conhecimento interno da implementação da barra de cores: cada barra de cores (atual) respeita uma chave chamada /pgfplots/colorbar addplot. O objetivo desta tecla é visualizar a barra de cores como tal, sem o seu eixo. Se personalizarmos esse, podemos obter as camadas corretas. Aqui está a solução:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{width=7cm,compat=1.11}
\begin{document}
    \begin{tikzpicture}
        \begin{axis}[
            colorbar,
            colorbar style={%
                colorbar addplot/.add={}{%
                    \addplot[
                        samples at={0,0.2,0.4,0.6,0.8},
                        clip marker paths,
                        scatter,
                        point meta=y,
                        scatter/use mapped color={draw=mapped color!50!black},
                        only marks,
                        mark=-, 
                        mark size=\pgfkeysvalueof{/pgfplots/colorbar/width}/2,
                        line width=2pt,
                    ]
                        (0.5,x);
                },
            },
        ]
        \addplot[contour prepared,contour/draw color=mapped color!50!black]
            table {
                2 2 0.8
                0.857143 2 0.6
                1 1 0.6
                2 0.857143 0.6
                2.5 1 0.6
                2.66667 2 0.6
                0.571429 2 0.4
                0.666667 1 0.4
                1 0.666667 0.4
                2 0.571429 0.4
                3 0.8 0.4
                0.285714 2 0.2
                0.333333 1 0.2
                1 0.333333 0.2
                2 0.285714 0.2
                3 0.4 0.2
            };
        \end{axis}
    \end{tikzpicture}
\end{document}

insira a descrição da imagem aqui

informação relacionada