我正在嘗試使用映射顏色的變體來繪製準備好的等高線圖。使用 正確調整線條顏色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
網格將始終具有相同的顏色,不支援根據當前值變更其顏色。但還有一種不同的方法。
我的想法是我們可以畫二色條彼此重疊:一個帶有陰影(即您的原樣),另一個帶有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}