如何在没有绘图的情况下创建朴素的彩条?

如何在没有绘图的情况下创建朴素的彩条?

我想创建 Kenneth Moreland 在其优秀论文中使用的颜色条,“用于科学可视化的不同色彩图”

它们没有经过任何修饰,看上去像这样:

彩条

知道他是怎么做到的吗?

答案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}

相关内容