在命令中动态更改 pgfplot 的颜色

在命令中动态更改 pgfplot 的颜色

我正在尝试在绘图函数嵌入到 \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};

在此处输入图片描述

相关内容