获取阴影中任意位置的颜色值

获取阴影中任意位置的颜色值

我想用来TikZ绘制下面的图片。我使用阴影库。我想获取阴影中任意位置的颜色值。以下是我的 MWE 和图片。

\documentclass[margin = 1cm]{standalone}
\usepackage{tikz}
\pgfdeclareverticalshading{myshading}{1cm}
{
    rgb(0cm)=(0.231, 0.298, 0.753);
    rgb(1cm)=(0.408, 0.541, 0.937);
    rgb(2cm)=(0.612, 0.741, 1.000);
    rgb(3cm)=(0.800, 0.851, 0.929);
    rgb(4cm)=(0.937, 0.808, 0.741);
    rgb(5cm)=(0.961, 0.631, 0.510);
    rgb(6cm)=(0.867, 0.373, 0.294);
    rgb(7cm)=(0.796, 0.310, 0.404)
}

\begin{document}

\begin{tikzpicture}
    \node[anchor = south west,inner sep = 0pt] at (0,0) {\pgfuseshading{myshading}};
    \foreach \x in {-0.8,-0.6,-0.4,-0.2,0.0,0.2,0.4,0.6} {
        \pgfmathparse{5 * \x + 4}
        \draw[] (1.2,\pgfmathresult) --++ (.3,0)node[right,font = \small]{\x};
    }  
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

首先,要生成此图,您可能需要使用 pgfplots(请参阅第节4.6.12 图像(矩阵)图pgfplots 手册)。

您还可以使用 pgfplots 获取颜色数据。首先,根据您的阴影定义颜色图。然后使用color of colormap将图表上的值转换为颜色。然后使用xcolor提取颜色信息。最后一步可以在 pgf 函数中编码,该函数除其他功能外,还将图表上的位置转换为 0 到 1000 之间的数字,以便能够使用密钥color of colormap

\documentclass[margin = 1cm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}

\pgfdeclareverticalshading{myshading}{1cm}
{
    rgb(0cm)=(0.231, 0.298, 0.753);
    rgb(1cm)=(0.408, 0.541, 0.937);
    rgb(2cm)=(0.612, 0.741, 1.000);
    rgb(3cm)=(0.800, 0.851, 0.929);
    rgb(4cm)=(0.937, 0.808, 0.741);
    rgb(5cm)=(0.961, 0.631, 0.510);
    rgb(6cm)=(0.867, 0.373, 0.294);
    rgb(7cm)=(0.796, 0.310, 0.404)
}
\pgfmathdeclarefunction{colordata}{1}{\begingroup 
    \pgfmathparse{1000*#1/1.4+800/1.4}%
    \tikzset{color of colormap={\pgfmathresult}}%
    \extractcolorspec{.}\pgfmathresult
    \pgfmathsmuggle\pgfmathresult
\endgroup}
\begin{document}

\begin{tikzpicture}
    \node[anchor = south west,inner sep = 0pt] at (0,0) {\pgfuseshading{myshading}};
    \foreach \x in {-0.8,-0.6,-0.4,-0.2,0.0,0.2,0.4,0.6} {
        \pgfmathparse{5 * \x + 4}
        \draw[] (1.2,\pgfmathresult) --++ (.3,0)node[right,font = \small]{\x};
    }  
    \pgfplotsset{colormap={mybluered}{rgb(0cm)=(0.231, 0.298, 0.753);
    rgb(1cm)=(0.408, 0.541, 0.937);
    rgb(2cm)=(0.612, 0.741, 1.000);
    rgb(3cm)=(0.800, 0.851, 0.929);
    rgb(4cm)=(0.937, 0.808, 0.741);
    rgb(5cm)=(0.961, 0.631, 0.510);
    rgb(6cm)=(0.867, 0.373, 0.294);
    rgb(7cm)=(0.796, 0.310, 0.404)}}
    
    \node[below=1em]{the color of the point $0.4$ on the chart is \pgfmathsetmacro\mycolordata{colordata(0.4)}\mycolordata};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容