我有 MWE,其中一条线由角度指定,一个圆由 \draw 指定。我能够使用 \addplot 绘制其他线条的颜色循环。但是,它不适用于 \draw。如何让使用 \draw 绘制的线条的颜色循环工作?
平均能量损失
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{
compat=1.9,
}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}[
axis equal,
xlabel=x,
ylabel=y,
cycle list name=exotic,
]
\addplot+[solid,line width=1.0pt] coordinates {(10,10) (1,1)};
\addplot+[dotted,line width=1.0pt] coordinates {(10,1) (1,10)};
\addplot+[loosely dotted,line width=1.0pt] coordinates {(1,1) (1,10)};
\draw (1,1) -- ++(45:2cm) -- ++(90:3cm);
\draw[solid,line width=1.0pt] (axis cs:5.5,5.5) circle [radius=1];
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
答案1
我不确定您是否/如何可以访问的当前状态并将cycle list
其应用于\draw
,但您也可以使用来完成所展示的所有部分\addplot
。
我展示了两种使用相对坐标绘制直线的方法。其中一种方法(见\addplot
下文第四种)只有在点很少的情况下才实用。另一种方法更灵活。您只需在表中指定相对坐标,然后通过 计算累积和(即绝对坐标)pgfplotstable
。
该圆圈是一个简单的参数图。
\documentclass{article}
\usepackage{pgfplotstable}
\pgfplotsset{
compat=1.9,
}
% read in numbers
\pgfplotstableread{
x y
1 1
2*cos(45) 2*cos(45)
0 3
}\data
% create new columns with cumulative sum
\pgfplotstablecreatecol[create col/expr={\pgfmathaccuma+\thisrow{x}}]{cumx}{\data}
\pgfplotstablecreatecol[create col/expr={\pgfmathaccuma+\thisrow{y}}]{cumy}{\data}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}[
axis equal,
xlabel=x,
ylabel=y,
cycle list name=exotic,
]
\addplot+[solid,line width=1.0pt] coordinates {(10,10) (1,1)};
\addplot+[dotted,line width=1.0pt] coordinates {(10,1) (1,10)};
\addplot+[loosely dotted,line width=1.0pt] coordinates {(1,1) (1,10)};
\addplot +[mark size=5pt,ultra thick] coordinates {(1,1)({1+2*cos(45)},{1+2*sin(45)})({1+2*cos(45)},{4+2*sin(45)})};
\addplot table[x=cumx,y=cumy] {\data};
\addplot +[solid,line width=1.0pt,domain=0:360,samples=50,mark repeat=10] ({5.5+cos(x)},{5.5+sin(x)});
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}
答案2
您可以通过标记图来访问样式
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}
\begin{document}
\begin{figure}[h]
\begin{tikzpicture}
\begin{axis}[
axis equal,
xlabel=x,
ylabel=y,
cycle list name=exotic,
]
\addplot+[solid,line width=1.0pt] coordinates {(10,10) (1,1)};\label{plot:1}
\addplot+[dotted,line width=1.0pt] coordinates {(10,1) (1,10)};\label{plot:2}
\addplot+[loosely dotted,line width=1.0pt] coordinates {(1,1) (1,10)};
\draw[/pgfplots/refstyle={plot:1}] (1,1) -- ++(45:2cm) -- ++(90:3cm);
\draw[/pgfplots/refstyle={plot:2}] (axis cs:5.5,5.5) circle [radius=1];
\end{axis}
\end{tikzpicture}
\end{figure}
\end{document}