![获取阴影中任意位置的颜色值](https://linux22.com/image/463583/%E8%8E%B7%E5%8F%96%E9%98%B4%E5%BD%B1%E4%B8%AD%E4%BB%BB%E6%84%8F%E4%BD%8D%E7%BD%AE%E7%9A%84%E9%A2%9C%E8%89%B2%E5%80%BC.png)
我想用来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}