我正在通过 matlab2tikz 在 TikZ 中绘制一些图表,得到以下输出:
\documentclass[a4paper]{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{pgfplots}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
width=10cm,
height=10cm,
colormap/jet,
scale only axis,
xmin=7,
xmax=9.5,
xlabel={(hh0)},
ymin=11.7,
ymax=12.7,
ylabel={(00l)},
axis x line*=bottom,
axis y line*=left
]
\addplot[scatter,only marks,scatter src=explicit,scatter/use mapped color={mark=*,mark options={},draw=mapped color,fill=mapped color}] plot table[row sep=crcr,meta index=2]{%
7.38517703285077 11.8600971333007 1\\
7.96222790369133 11.9099275551383 2\\
8.49288094528219 11.9557513572467 3\\
8.9868007534447 11.998403112297 4\\
9.45070037936319 12.0384625164465 5\\
};
\end{axis}
\end{tikzpicture}
\end{document}
这编译得很好。不过,我希望能够使用预定义的颜色,例如
\colorlet{color1}{SkyBlue}
第一个散射点的颜色,然后第二个散射点的颜色为 color2,依此类推。现在,表中的第三列根据喷射配色方案定义了点的颜色。
我该怎么做?我尝试为五种数据类型中的每一种创建一个类(例如 1 -> [a]),然后只用颜色名称代替颜色整数。
答案1
我尝试为五种数据类型中的每一种创建一个类(例如 1 -> [a]),并且只用颜色名称代替颜色整数。
你是这样做的吗?
scatter/classes={
1={mark=*,mark options={},blue},%
2={mark=*,mark options={},red},%
3={mark=*,mark options={},color1},% color1 is defined as you did.
4={mark=*,mark options={},green},%
5={mark=*,mark options={},olive}
代码:
\documentclass[a4paper]{article}
\usepackage[dvipsnames]{xcolor}
\usepackage{pgfplots}
\usepackage{tikz}
\colorlet{color1}{SkyBlue} %%<--- define colors
\begin{document}
\begin{tikzpicture}
\begin{axis}[%
width=10cm,
height=10cm,
scale only axis,
xmin=7,
xmax=9.5,
xlabel={(hh0)},
ymin=11.7,
ymax=12.7,
ylabel={(00l)},
axis x line*=bottom,
axis y line*=left
]
\addplot[scatter,only marks,scatter src=explicit,
scatter/classes={
1={mark=*,mark options={},blue},%
2={mark=*,mark options={},red},%
3={mark=*,mark options={},color1},%
4={mark=*,mark options={},green},%
5={mark=*,mark options={},olive}
},] plot table[row sep=crcr,meta index=2]{%
7.38517703285077 11.8600971333007 1\\
7.96222790369133 11.9099275551383 2\\
8.49288094528219 11.9557513572467 3\\
8.9868007534447 11.998403112297 4\\
9.45070037936319 12.0384625164465 5\\
};
\end{axis}
\end{tikzpicture}
\end{document}