答案1
对的,这是可能的。
旁注:虽然以下内容产生了有趣的图片并回答了问题,但我希望这确实解决了您打算对结果做什么... pgfplots 轴需要进行一些微调才能集成到更大的 tikzpicture 中(由于其坐标重新缩放)。如果您需要这方面的帮助,您可能需要考虑 pgfplots 手册的第 4.26 节 TikZ 互操作性。正确的解决方案是实际在 PGF 中实现 CMYK 阴影... 旁注结束。
这个想法是分配一个坐标系(您可能也会在 tikz 中这样做)并为每个坐标分配颜色。然后我们需要连接边缘并进行插值。插值需要几何图形,我选择使用三角形。
在初稿中,这将是
\documentclass{standalone}
\usepackage[cmyk]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\definecolor{custdark}{cmyk}{0,0.3,1,0.27}
\definecolor{custlight}{cmyk}{0,0.05,0.55,0.05}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
x=5cm,y=5cm,
]
\addplot[patch,mesh/color input=explicit,shader=faceted interp]
table[meta=cdata] {
x y cdata
% first triangle: upper left corner
0 0 color=custlight
1 1 color=custlight
0 1 color=custdark
% second triangle:left side, lower right corner
0 0 color=custlight
1 0 color=custdark
1 1 color=custlight
% third triangle right side, lower left corner
1 0 color=custdark
2 0 color=custlight
1 1 color=custlight
% 4th triangle upper right corner
2 0 color=custlight
2 1 color=custdark
1 1 color=custlight
};
\end{axis}
\end{tikzpicture}
\end{document}
最终版本将隐藏轴并仅显示一部分,即 x 范围 [0.5,1.5] 内的部分:
\documentclass{standalone}
\usepackage[cmyk]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\definecolor{custdark}{cmyk}{0,0.3,1,0.27}
\definecolor{custlight}{cmyk}{0,0.05,0.55,0.05}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
x=5cm,y=5cm,xmin=0.5,xmax=1.5,hide axis]
\addplot[patch,mesh/color input=explicit,shader=interp]
table[meta=cdata] {
x y cdata
% first triangle: upper left corner
0 0 color=custlight
1 1 color=custlight
0 1 color=custdark
% second triangle:left side, lower right corner
0 0 color=custlight
1 0 color=custdark
1 1 color=custlight
% third triangle right side, lower left corner
1 0 color=custdark
2 0 color=custlight
1 1 color=custlight
% 4th triangle upper right corner
2 0 color=custlight
2 1 color=custdark
1 1 color=custlight
};
\end{axis}
\end{tikzpicture}
\end{document}
以下是增加了更多复杂性的变体。
看起来您的阴影在中下部某处停止了,即颜色相同。如果我们求助于颜色图,也可以通过 pgfplots 实现这一点。颜色图只是一种矩形阴影,但为特殊用例准备了(见下文)。
在这里,我建议使用以下颜色图:
\documentclass{standalone}
\usepackage[cmyk]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\definecolor{custdark}{cmyk}{0,0.3,1,0.27}
\definecolor{custlight}{cmyk}{0,0.05,0.55,0.05}
\begin{document}
\pgfplotsset{
colormap={customtransition}{
color(0)=(custlight)
color(800)=(custdark)
color(1000)=(custdark)
},
}
\pgfplotscolorbardrawstandalone[colorbar horizontal]
\end{document}
它在 0 到 800 之间线性插值,并在 800 到 1000 之间保持相同的颜色。
我们也可以借助这个颜色图来定义与三角形角相关的颜色,其结果如下:
\documentclass{standalone}
\usepackage[cmyk]{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\definecolor{custdark}{cmyk}{0,0.3,1,0.27}
\definecolor{custlight}{cmyk}{0,0.05,0.55,0.05}
\begin{document}
\begin{tikzpicture}
\begin{axis}[x=5cm,y=5cm,
xmin=0.5,xmax=1.5,hide axis,
]
\addplot[patch,
point meta=explicit,
mesh/color input=colormap,
shader=interp,
colormap={customtransition}{
color(0)=(custlight)
color(800)=(custdark)
color(1000)=(custdark)
},
]
table[meta=cdata] {
x y cdata
% first triangle: upper left corner
0 0 0
1 1 0
0 1 1
% second triangle:left side, lower right corner
0 0 0
1 0 1
1 1 0
% third triangle right side, lower left corner
1 0 1
2 0 0
1 1 0
% 4th triangle upper right corner
2 0 0
2 1 1
1 1 0
};
\end{axis}
\end{tikzpicture}
\end{document}
现在,“cdata” 是对颜色图中颜色的引用。在“cdata”中执行插值,即在数字中。插值数字指的是颜色图中的不同颜色。示例:cdata“0”和“1”的中间是“0.5”。这指的是颜色图中的颜色 500。这允许对阴影进行不同的(实际上更强大的)控制。请注意,映射自动缩放到 [0,1000],即最小 cdata 值“0”在颜色图中映射到 0,最大 cdata 值“1”在颜色图中映射到 1000。