在在 pgfplots 的 for 循环中更改 addplot 中的颜色讨论了如何循环不存在的颜色,\addplot
但axis
我想循环现有的颜色,但是:
\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}