答案1
您需要的是阴影。
唯一的问题是你从哪里得到颜色图?既然你提到了“情节”,我想你指的是 tikz 库pgfplots
。
如果你获得了一些pgfplots
输入的颜色图,并且想要以“未修饰”的形式显示它,你可以按如下方式进行:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\pgfplotsset{
colormap={cyanmauve}{color=(cyan) rgb255=(224,176,255)},
}
% convert `hot' -> \result
\pgfplotscolormaptoshadingspec{cyanmauve}{8cm}\result
% define and use a shading in pgf:
\def\tempb{\pgfdeclarehorizontalshading{tempshading}{1cm}}%
% where `\result' is inserted as last argument:
\expandafter\tempb\expandafter{\result}%
\pgfuseshading{tempshading}%
\end{document}
如果你不参考pgfplots
颜色图而只是想要一些阴影,那么你可以使用
\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\pgfdeclarehorizontalshading{colormap}{1cm}{rgb(0.0pt)=(0,1,1); rgb(8cm)=(0.8784,0.6902,0.99998)}
\pgfuseshading{colormap}
\end{document}
具有相同的输出。
参考文献:手册\pgfplotscolormaptoshadingspec
中记录了这一点pgfplots
,并附有非常详细的定义说明colormaps
(比较其“颜色图”部分)。
该宏的\pgfdeclare*shading
详细解释在 中pgfmanual.pdf
。
答案2
对 Christian Feuersänger 的回答的补充:Moreland 方法的关键点在于颜色的插值不是发生在 RGB 空间中,而是发生在 Msh 空间中,从而产生更均匀的颜色渐变。
Moreland 提供了一个 Excel 电子表格,用于计算这些渐变并将其转换为 RGB。要生成 PGFPlots 的颜色图规范,您可以将 RGB 值列表复制到新文件中colormap.txt
,例如:
0 152 190
37 156 190
55 159 191
69 162 191
81 165 191
92 168 190
102 170 190
112 172 190
121 174 189
130 176 188
138 177 187
146 179 186
153 179 185
160 180 184
167 180 183
174 180 181
180 180 180
184 179 175
187 177 169
190 175 164
192 172 158
195 169 152
196 166 146
198 163 140
199 159 134
200 155 128
200 150 122
200 146 116
200 141 110
199 136 104
198 131 98
197 125 92
195 119 86
然后运行以下awk
命令:
awk '{printf "rgb255=(%s,%s,%s) ", $1,$2,$3}' < colormap.txt
这将返回以下字符串:
rgb255=(0,152,190) rgb255=(37,156,190) rgb255=(55,159,191) rgb255=(69,162,191) rgb255=(81,165,191) rgb255=(92,168,190) rgb255=(102,170,190) rgb255=(112,172,190) rgb255=(121,174,189) rgb255=(130,176,188) rgb255=(138,177,187) rgb255=(146,179,186) rgb255=(153,179,185) rgb255=(160,180,184) rgb255=(167,180,183) rgb255=(174,180,181) rgb255=(180,180,180) rgb255=(184,179,175) rgb255=(187,177,169) rgb255=(190,175,164) rgb255=(192,172,158) rgb255=(195,169,152) rgb255=(196,166,146) rgb255=(198,163,140) rgb255=(199,159,134) rgb255=(200,155,128) rgb255=(200,150,122) rgb255=(200,146,116) rgb255=(200,141,110) rgb255=(199,136,104) rgb255=(198,131,98) rgb255=(197,125,92) rgb255=(195,119,86)
然后可以将该字符串粘贴到 Christian 的代码中以生成颜色图:
\documentclass{article}
\usepackage{pgfplots, pgfplotstable}
\begin{document}
\pgfplotsset{
colormap={moreland}{
rgb255=(0,152,190) rgb255=(37,156,190) rgb255=(55,159,191) rgb255=(69,162,191) rgb255=(81,165,191) rgb255=(92,168,190) rgb255=(102,170,190) rgb255=(112,172,190) rgb255=(121,174,189) rgb255=(130,176,188) rgb255=(138,177,187) rgb255=(146,179,186) rgb255=(153,179,185) rgb255=(160,180,184) rgb255=(167,180,183) rgb255=(174,180,181) rgb255=(180,180,180) rgb255=(184,179,175) rgb255=(187,177,169) rgb255=(190,175,164) rgb255=(192,172,158) rgb255=(195,169,152) rgb255=(196,166,146) rgb255=(198,163,140) rgb255=(199,159,134) rgb255=(200,155,128) rgb255=(200,150,122) rgb255=(200,146,116) rgb255=(200,141,110) rgb255=(199,136,104) rgb255=(198,131,98) rgb255=(197,125,92) rgb255=(195,119,86)
}
}
\pgfplotscolormaptoshadingspec{moreland}{8cm}\result
\def\tempb{\pgfdeclarehorizontalshading{moreland}{1cm}}%
\expandafter\tempb\expandafter{\result}%
\pgfuseshading{moreland}%
\end{document}
得到如下图像:
答案3
对于简单的渐变,一种简单的方法是 tcolorbox
内部使用 TikZ 的包:
\documentclass{article}
\usepackage[skins]{tcolorbox}
\begin{document}
\begin{tcolorbox}
[skin=widget,
boxrule=0mm,
arc=0mm,outer arc=0mm,
width=5cm, height=3mm,
interior style={
left color=blue!40!white,
right color=red!90!green!65}]
\end{tcolorbox}
\begin{tcolorbox}
[skin=widget,
boxrule=0mm,
arc=0mm,outer arc=0mm,
width=5cm, height=3mm,
interior style={
left color=green!60!black,
right color=red!85!black}]
\end{tcolorbox}
\end{document}
注意:正如 Jake 所评论的,当然这也可以直接使用 TikZ 获得,但tcolorbox
如果可以将此渐变用作文本、表格或图像的背景,则会有有趣的选择。
更复杂的渐变也可以通过 TikZ 获得,而无需使用pgfplots
其他答案,只需重叠一些褪色的矩形即可:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{fadings}
\pagestyle{empty}
\begin{document}
\begin{tikzpicture}
\fill [blue,path fading=west] (0,0) rectangle (5cm,3mm);
\fill [red,path fading=east] (0,0) rectangle (5cm,3mm);
\fill [yellow,path fading=east] (0,0) rectangle (2cm,3mm);
\fill [green,path fading=west] (3,0) rectangle (5cm,3mm);
\end{tikzpicture}
\end{document}