準備した等高線プロットにマップされた色のバリエーションを使用しようとしています。 線の色は を使用して正しく調整されていますdraw color=mapped color!50!black
が、カラーバーのグリッドにマップされた色の値を使用できません。以下の例では黒いグリッド線が生成されますが、目盛りの値に対応する色の濃い色合いにしたいと思います。
\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}
答え1
グリッドは常に同じ色になり、現在の値に応じて色を変更することはサポートされていません。ただし、別の方法があります。
私のアイデアは、二カラーバーが重なり合っています。1 つはシェーディング付き (つまり、そのままのカラーバー)、もう 1 つは とcolorbar sampled line
バー マーカー付きです。重要なアイデアは、実行時にカラーバー全体を生成するコード キーを変更することですcolorbar/draw
。
\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}
グラフィック レイヤーは改善の余地がありますが、問題ないようです。
編集
レイヤー化されたグラフィックに関する改善を求められました。良いニュースは、私の最初の解決策は、レイヤーを自動的にソートする追加によってすぐに機能するということです\pgfplotsset{set layers}
。残念ながら、pgfplots にバグがあるようで、レイヤー化されたグラフィックによってカラーバーが壊れてしまいます :-( そのバグは修正します。
このバグにより、回避策が見つかりました。この回避策は、カラーバー実装の内部知識に依存しています。すべての (現在の) カラーバーは、 と呼ばれるキーを尊重します/pgfplots/colorbar addplot
。このキーの目的は、軸なしでカラーバーを視覚化することです。このキーをカスタマイズすると、正しいレイヤー化を実現できます。解決策は次のとおりです。
\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}