我设置了一个新的颜色列表,但它不在我的代码中(如下所示)。每组标记和自己的线条都应该具有列表中的一种颜色。这是我得到的结果:
\documentclass[a4paper,twoside,12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\usepackage{pgfplotstable, pgfplots}
\definecolor{limegreen}{rgb}{0.2, 0.8, 0.2}
\pgfplotsset{
/pgfplots/bar cycle list/.style={/pgfplots/cycle list={%
{blue,fill=blue!30,draw=blue!50},%
{red,fill=red!40,draw=red!60},%
{limegreen,fill=limegreen!40,draw=limegreen!60},%
{violet,fill=violet!30,draw=violet!50},%
}
},
}
\begin{filecontents*}{WHC.dat}
0 0 0 0
2 2.2 3.9 6.3
5 5.1 10.5 15.4
10 10.4 19 28
\end{filecontents*}
\newcommand{\WHCplot}[1]{
\addplot table [only marks, x index=0, y index=#1]{WHC.dat};%
\addplot[domain=0:10] {#1*x};%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=12cm, height=10cm]
\pgfplotsinvokeforeach{1,2,3}{\WHCplot{#1}}
\end{axis}
\end{tikzpicture}
\end{document}
答案1
\documentclass[a4paper,twoside,12pt]{book}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}
\usepackage[english]{babel}
\usepackage{pgfplotstable, pgfplots}
\definecolor{limegreen}{rgb}{0.2, 0.8, 0.2}
\pgfplotsset{
cycle list={%
{blue!50,mark=square*,mark options={fill=blue!40}},%
{red!60,mark=*,mark options={fill=red!40}},%
{limegreen!60,mark=diamond*,mark options={fill=limegreen!40}},%
{violet!50,mark=triangle*,mark options={fill=violet!30}},%
}
}
\begin{filecontents*}{WHC.dat}
0 0 0 0
2 2.2 3.9 6.3
5 5.1 10.5 15.4
10 10.4 19 28
\end{filecontents*}
\newcommand{\WHCplot}[1]{
\addplot+ table [only marks, x index=0, y index=#1]{WHC.dat};%
}
\newcommand{\WHCploti}[1]{
\addplot+[no marks,domain=0:10] {#1*x};%
}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
width=12cm, height=10cm
]
\pgfplotsinvokeforeach{1,2,3}{\WHCplot{#1}}
\pgfplotsset{cycle list shift=-3}
\pgfplotsinvokeforeach{1,2,3}{\WHCploti{#1}}
\end{axis}
\end{tikzpicture}
\end{document}
一些评论
- 在您的代码中,您设置了一种样式
bar cycle list/.style
但从未使用它。我直接改为cycle list={...}
。 - 您
cycle list={}
指定颜色、线条样式、标记和标记样式。 - 您需要,
\addplot+
因为您在\addplot
s 中使用了 []。 - 由于每个组(标记和线条)应采用相同的颜色,因此我使用了两个循环和
\pgfplotsset{cycle list shift=-3}
。如果这不是预期的,请恢复到只有一个循环的设置。