如何使用 pgfplots 模拟 TikZ 中当前以 RGB 完成的阴影,以便它可以使用 CMYK?

如何使用 pgfplots 模拟 TikZ 中当前以 RGB 完成的阴影,以便它可以使用 CMYK?

先前的问题我学会了如何在左侧页面上制作对角阴影,并将其反映在右侧页面上。感谢 Ignasi 和其他人,这个功能一直运行良好。

但对于印刷版本,它必须是 CMYK,而不是 RGB。根据这个问题,当前的 TikZ pgf 驱动程序无法实现 CMYK,而 pgfplots 可以执行与其自己的 CMYK 驱动程序配合使用的阴影。

我不知道需要哪些 pgfplots 命令才能生成下面的示例。pgfplots 文档中的示例都比我需要的复杂得多,并且(可以理解)旨在绘制带有轴的图表,其中阴影用于显示数据的特征。是否可以使用 pgfplots 单独创建一个对角阴影区域(并反映它)?

使用反射对角线阴影的跨页示例

答案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。

相关内容