我观察到我的色彩图上出现了一些奇怪的行为。以下是最低限度的工作代码示例:
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
colormap={parula}{[1pt] rgb255(0pt)=(53,42,135); rgb255(1pt)=(15,92,221); rgb255(2pt)=(18,125,216); rgb255(3pt)=(7,156,207); rgb255(4pt)=(21,177,180); rgb255(5pt)=(89,189,140); rgb255(6pt)=(165,190,107); rgb255(7pt)=(225,185,82); rgb255(8pt)=(252,206,46); rgb255(9pt)=(249,251,14)}, % BROKEN
%colormap={parula}{ rgb255=(53,42,135); rgb255=(15,92,221); rgb255=(18,125,216); rgb255=(7,156,207); rgb255=(21,177,180); rgb255=(89,189,140); rgb255=(165,190,107); rgb255=(225,185,82); rgb255=(252,206,46); rgb255=(249,251,14)}, % FIXED
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
colormap access=piecewise const,
colorbar horizontal,
colorbar sampled,
colorbar style={samples=11},
point meta min=0,
point meta max=1,
]
\end{axis}
\end{tikzpicture}
\end{document}
这会产生以下颜色条: 问题是第五种颜色重复了两次(在第六个位置重复),而第十种颜色根本没有显示。
现在,我发现我实际上有一个修复方法,即用第 5 行注释掉的行替换第 4 行代码。主要区别在于不包含每种颜色的 pt 规范。以下是更正后的结果:
所以,我的问题是,为什么我在使用包含每种颜色的 pt 规范的代码时会出现不良行为?您可能想知道,如果我已经有了修复,我为什么还要关心这个问题。原因是我使用的是 Matlab2Tikz,它输出的颜色图包含 pt 规范,他们似乎对此非常谨慎。所以我有几个选择:(1) 使用上面显示的修复从 matlab2tikz 获取输出后修复我的颜色图,(2) 更改 matlab2tikz 脚本以正确执行,(3) 更好的选择?
在采取行动之前,我只是想了解我所看到的问题的根本原因。用户错误?Matlab2Tikz 有错误?PGFPLOTS 有错误?等等?
答案1
似乎缺少最终值,以下给出了所需的结果(上述)
\documentclass[border=5pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{
colormap={parula}{[1pt] rgb255(0pt)=(53,42,135); rgb255(1pt)=(15,92,221); rgb255(2pt)=(18,125,216); rgb255(3pt)=(7,156,207); rgb255(4pt)=(21,177,180); rgb255(5pt)=(89,189,140); rgb255(6pt)=(165,190,107); rgb255(7pt)=(225,185,82); rgb255(8pt)=(252,206,46); rgb255(9pt)=(249,251,14); rgb255(10pt)=(255,255,0)}, % NOT BROKEN
%colormap={parula}{ rgb255=(53,42,135); rgb255=(15,92,221); rgb255=(18,125,216); rgb255=(7,156,207); rgb255=(21,177,180); rgb255=(89,189,140); rgb255=(165,190,107); rgb255=(225,185,82); rgb255=(252,206,46); rgb255=(249,251,14)}, % FIXED
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
colormap access=piecewise const,
colorbar horizontal,
colorbar sampled,
colorbar style={samples=11},
point meta min=0,
point meta max=1,
]
\end{axis}
\end{tikzpicture}
\end{document}