编辑:

编辑:

在 pgfplots 的 for 循环中更改 addplot 中的颜色讨论了如何循环不存在的颜色,\addplotaxis我想循环现有的颜色,但是:

\documentclass[border=5pt,tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{graphicx}
\usepackage{xcolor}
\definecolor{greyscale1}{rgb}{0.1,0.1,0.1}

\begin{document}
\begin{tikzpicture}
  \begin{axis}
    \foreach \file in {1}
    \addplot[color=greyscale\file] table [col sep=comma] {d.dat};;
  \end{axis}
\end{tikzpicture}
\end{document}

返回错误:

Package xcolor Error: Undefined color `greyscale\file '.

如果我这样做:

\documentclass[border=5pt,tikz]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{graphicx}
\usepackage{xcolor}
\definecolor{greyscale1}{rgb}{0.1,0.1,0.1}

\begin{document}
\begin{tikzpicture}
    \foreach \file in {1}
    \draw[color=greyscale\file] (0,2) -- (1,2);
\end{tikzpicture}
\end{document}

我得到:

在此处输入图片描述

编辑:

d.dat 看起来像

0,2
1,2

答案1

这些是常见的扩展问题。解决此问题的一种方法是使用\pgfplotsinvokeforeach

\documentclass[border=5pt,tikz]{standalone}
\usepackage{filecontents}
\begin{filecontents*}{d.dat}
0,2
1,2
\end{filecontents*}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usepackage{graphicx}
\usepackage{xcolor}
\definecolor{greyscale1}{rgb}{0.1,0.1,0.1}

\begin{document}
\begin{tikzpicture}
  \begin{axis}[ymin=1.8,ymax=2.2]
    \pgfplotsinvokeforeach{1}
    {\addplot[color={greyscale#1}] table [col sep=comma] {d.dat};}
  \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容