请节省你的时间和精力在这个问题上,这不是一个重要的问题。
这些图片中间(或其他地方)的颜色是什么?如何检索/计算稍后用于绘图的颜色?
\documentclass[a4paper]{article}
\pagestyle{empty}
\parindent=0pt
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\usetikzlibrary{shadings}
\usetikzlibrary{pgfplots.colormaps}
\begin{document}
\centering
\begin{tikzpicture}
\begin{axis}[colormap={mal-map}{[1cm] rgb255(0cm)=(50,50,10) color(1cm)=(white) rgb255(5cm)=(200,100,150)}, colorbar horizontal, colorbar/width=2cm, hide axis]
%\addplot[mesh, point meta=y, line width=4mm, samples=150] {x^2}; % Some graph to show...
\end{axis}
\end{tikzpicture}\bigskip
\begin{tikzpicture}
\begin{axis}[colormap/bright, colorbar horizontal, colorbar/width=2cm, hide axis]
%\addplot[mesh, point meta=y, line width=4mm, samples=150] {x^2}; % Some graph to show...
\end{axis}
\end{tikzpicture}\bigskip
\begin{tikzpicture}
\shade[upper left=brown, upper right=yellow,
lower left=cyan, lower right=black!50]
(0,0) rectangle (4,4);
%\draw (0,0) grid (4,4); % help lines
\end{tikzpicture}\bigskip
\begin{tikzpicture}
\shade[ball color=red, opacity=0.50] (1,0) circle (2.0cm);
\shade[ball color=black, opacity=0.50] (0.5,0) circle (1.5cm);
%\draw (-1,-2) grid (3,2); % help lines
\end{tikzpicture}
\end{document}
我知道包\extractcolorspecs
中的命令xcolor
,但事实并非如此。前两张图片是pgfplots
使用colormap
/准备的colorbar
,接下来的两张图片是tikz
使用库\shade
中的命令准备的。shadings
我们尝试复制并使用colorbar
特定位置的颜色,有关该实验的更多详细信息,请参阅这个问题。
我们可以猜出第一张图片中的颜色,也可以计算第二张图片中的颜色,因为我们知道两种主要颜色之间的距离。好吧,看来困难的情况是剩下的两种。第三个示例使用两个方向来放置颜色(不仅使用水平或垂直方向,如示例中所示pgfplots
),最后一个示例使用不透明度和图层。我想知道是否有人需要解决这个问题。
有一个从colormap
到 的转换shadingspec
,在第 173 页提到了这一点pgf图手动的。
我正在考虑这个命令(如果我暂时忽略不透明度):\getmecolor{x-coordinate}{y-coordinate}
结果将是 RGB 或 CMYK 的颜色。
答案1
您可以使用pgfplots
宏\pgfplotscolormapaccess
:
\documentclass{standalone}
\parindent=0pt
\usepackage{pgfplots}
\pgfplotsset{compat=1.10}
\begin{document}
\pgfplotsset{
colormap={mal-map}{[1cm] rgb255(0cm)=(50,50,10) color(1cm)=(white) rgb255(5cm)=(200,100,150)}
}
\begin{tikzpicture}
\begin{axis}[colormap name={mal-map}, colorbar horizontal, colorbar/width=2cm, hide axis]
%\addplot[mesh, point meta=y, line width=4mm, samples=150] {x^2}; % Some graph to show...
\end{axis}
\end{tikzpicture}\bigskip
\begin{tikzpicture}
\foreach \x in {0,0.25,0.5,0.75,1} {
% \pgfplotscolormapaccess[<input min>:<input max>]{<input>}{<colormap name>}
\pgfplotscolormapaccess[0:1]{\x}{mal-map}
\message{GOT \meaning\pgfmathresult^^J}%
\def\TEMP{\definecolor{my color}{rgb}}
\expandafter\TEMP\expandafter{\pgfmathresult}
\fill[my color] (\x*3cm,0) rectangle ++ (0.2cm,1cm);
}
\end{tikzpicture}
\end{document}
它需要三个参数:第一个是输入参数的范围。在我们的例子中,输入参数是\x
,我们假设\x=0
是下限,\x=1
是上限。
输出被分配给\pgfmathresult
;它将包含三元组{<r>,<g>,<b>}
。
然后我们使用xcolor
命令来定义一个以这些坐标\definecolor{<name>}{rgb}{<r>,<g>,<b>}
命名的颜色。<name>
\expandafter
和指令\def
是 TeX 命令,用于确保xcolor
接收扩展值,而不是标记“ \pgfmathresult
”(请参阅我应该从哪里开始 LaTeX 编程?了解有关这些编程结构的详细信息)。
该宏\message{...\meaning\pgfmathresult}
只是一个调试指令;\meaning
显示以下宏的值。
当然,这只适用于颜色图。我相信没有 tikz 解决方案允许在给定输入向量的情况下获取任意颜色。但您可能能够将一些更简单的 tikz 阴影公式化为colormap
(至少是矩形阴影)。