如何绘制颜色函数关系图

如何绘制颜色函数关系图

我正在寻找基于公式为矩形着色的 LaTeX 代码,该$(x,y)$公式通过公式给出位置处的颜色$z=f(x,y)$,其中$z$是波长,我们希望$z$在 处显示一个颜色点$(x,y)$

解释:

在相对论中,光的颜色受观察者、光源、反射器等的速度影响。例如,对于正常反射,可能存在以下关系: $\lambda_r=\frac{1-\beta}{1+\beta}} \lmbda_i$ 其中$\lambda_i$是入射波长,$\lambda_r$ 是反射波长,$\beta$是范围内的某个分数速度$(-1,1)$。这里的问题是如何用颜色绘制这个公式的图形。

例如,横轴可以显示光谱的可见部分$\lambda_i$,纵轴可以显示$\beta$,并且坐标处的每个点 $(\lambda_i,\beta)$都可以用的颜色来着色$\lambda_r$(对红外或紫外区域做了一些规定)。

答案1

xcolor软件包提供了一个wave模型,允许您根据波长指定颜色。您需要完成\ComputeColor您的目的,以根据 x 和 y 坐标返回范围为 [363,..,814] 的值。使用我的\ComputeColorMWE 版本,如下所示:

在此处输入图片描述

代码:

\documentclass{article} 
\usepackage{xcolor}
\usepackage{tikz}

\newcommand*{\DeltaX}{0.01}%
\newcommand*{\DeltaY}{0.01}%
\newcommand*{\XMin}{1}%
\newcommand*{\XMax}{3}%
\newcommand*{\YMin}{0}%
\newcommand*{\YMax}{1}%

\makeatletter
\pgfmathsetmacro{\XFirstStep}{\XMin+\DeltaX}%
\pgfmathsetmacro{\YFirstStep}{\YMin+\DeltaY}%
\def\@MinWavelength{363}%  lambda in nm units
\def\@MaxWavelength{814}%
\def\XWeight{0.3}%
\def\YWeight{0.2}%
\newcommand{\ComputeColor}[3]{%
    %% #1 = macro to contain color specification
    %% #2 = x coordinate
    %% #3 = y coordinate
    \pgfmathtruncatemacro#1{%
         (\@MaxWavelength-\@MinWavelength)
        *(
            \XWeight*(#2-\XMin)/(\XMax-\XMin)
           +\YWeight*(#3-\YMin)/(\YMax-\YMin)
         )
        +\@MinWavelength
    }%
}%
\makeatother

\begin{document}
\begin{tikzpicture}
    %\draw [gray] (\XMin,\YMin) rectangle (\XMax, \YMax);
    \foreach \x in {\XMin, \XFirstStep, ..., \XMax} {
        \foreach \y in {\YMin, \YFirstStep, ..., \YMax} {
            \ComputeColor{\CurrentColor}{\x}{\y}%
            %\typeout{\x,\y: \color=\CurrentColor}% 
            \definecolor{MyColor}{wave}{\CurrentColor}
            \fill [MyColor] (\x+0.5*\DeltaX,\y+0.5*\DeltaY) circle (\DeltaX);
        }%
    }
\end{tikzpicture}
\end{document}

相关内容