我在 TikZ 方面遇到了一个小问题,我无法弄清楚。我在 MATLAB 中生成了一些 TikZ 代码(使用 matlab2tikz),显示了带有用户定义颜色图和相应颜色条的图像。图像导出为 .png,但鉴于颜色条是在 TikZ 中创建的,我需要相应地为其着色(定义新的颜色图)。我简化了代码以获得 MWE,它的内容如下(我用一个简单的颜色图替换了用户定义的颜色图):
\documentclass[11pt,twoside,a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usepackage{tikz} %inline graphics
\usetikzlibrary{plotmarks,external}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=\textwidth,height=4cm,axis on top,scale only axis,
xmin=0,xmax=5,xlabel={myxlabel},ymin=0,ymax=4000,
colorbar,
colormap ={mymap}{rgb(0pt)=(0,1,1); rgb(63pt)=(1,0,1)},
ylabel={myylabel}
]
\end{axis}
\end{tikzpicture}%
\end{document}
这很好用,但考虑到我的颜色图有两种以上的颜色定义,我认为将其保存在单独的 .tex 文件中,比如 mycmap.tex,是个好主意
colormap ={mymap}{\input{mycmap}},
但是,如果我这样做,它不起作用...我尝试将其保存为 .txt 文件而不是 .tex,但仍然没有成功。有什么想法可以解决它吗?
提前致谢! ;)
答案1
我不知道为什么,但选择少于 64 种颜色的色彩图对我来说是有效的。
答案2
您可以在外部文件中定义一个宏,如下面的代码所示(filecontents
用于创建外部文件的包和环境):
\documentclass[11pt,twoside,a4paper]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{plot coordinates/math parser=false}
\usepackage{tikz} %inline graphics
\usetikzlibrary{plotmarks,external}
%% creation of external colormap
\usepackage{filecontents}
\begin{filecontents*}{\jobname-external-colormap}
\def\mycolormap{rgb(0pt)=(0,1,1); rgb(63pt)=(1,0,1)}
\end{filecontents*}
%%
\input{\jobname-external-colormap}
\begin{document}
\begin{tikzpicture}
\begin{axis}[width=\textwidth,height=4cm,axis on top,scale only axis,
xmin=0,xmax=5,xlabel={myxlabel},ymin=0,ymax=4000,
colorbar,
colormap ={mymap}{\mycolormap},
ylabel={myylabel}
]
\end{axis}
\end{tikzpicture}
\end{document}