我正在尝试在绘图函数嵌入到 \newcommand 中时动态更改用于绘图的颜色。但是我无法让它显示除上次定义的颜色之外的其他颜色。我必须更改什么?我希望两条不同颜色的线。谢谢!
\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{tikz, pgfplots}
\newcommand\setcolor[1]{\def\mycolor{#1}}
\newcommand\mycolor{black}
\begin{document}
\begin{tikzpicture}
\newcommand{\test}[2]{%
\addplot[color=#2,mark=x] coordinates {
(2,#1)
(8,#1)
};
}
\begin{axis}
\edef\colora{red}
\test{1}{\colora}
\edef\colora{blue}
\test{2}{\colora}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
只是不要覆盖定义的颜色。
\documentclass[11pt]{article}
\usepackage{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\newcommand{\test}[2]{
\addplot[color=#2, mark=x] coordinates {
(2,#1)
(8,#1)
};
}
\begin{axis}
\edef\colora{red}
\test{1}{\colora}
\edef\colorb{blue}
\test{2}{\colorb}
\end{axis}
\end{tikzpicture}
\end{document}
答案2
虽然不是很好,但我制作了两个轴并将它们叠加在一起,这样我就可以多次更改颜色的定义。如果其他人有更好的解决方案,我会将该答案标记为解决方案。
\begin{tikzpicture}
\newcommand{\test}[2]{%
\addplot[color=#2,mark=x] coordinates {
(2,#1-1)
(#1,#1)
};
}
\begin{axis}
\edef\colora{red}
\test{1}{\colora}
\end{axis}
\begin{axis}
\edef\colora{blue}
\test{2}{\colora}
\end{axis}
\end{tikzpicture}
答案3
这可能不完全是你所描述的,但这是一种不用 的方法\newcommand
,只需使用tikz-pgf
\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz, pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\pgfplotstableread{
x y z
2 1 2
8 1 2
}{\tabledata}
\addplot[blue] table [x=x, y=y] {\tabledata};
\addplot[red] table [x=x, y=z] {\tabledata};
\end{axis}
\end{tikzpicture}
\end{document}
这是基于两种不同颜色的假设:
我希望有两条不同颜色的线。
如果你有多条不同颜色的线,那么这可能不是很有效。但\newcommand
如果每个图中都有多个数据点,那么将数据移动到数据文件并将其加载为
\addplot[red] table [x=x, y=z] {datafile.dat};