我创建了一个新命令,用于从文件打印图表。到目前为止一切顺利。现在我想向命令添加一个附加参数颜色。
这是我目前所拥有的:
\newcommand{\plotvtf}[4]{%
\ifthenelse{\isempty{#4}}{
\renewcommand{\thiscolor}{}
}{
\renewcommand{\thiscolor}{color=#4}
\StrSubstitute{#4}{/tikz/}{}[\thiscolor]%
}%
\addplot [ultra thick, \thiscolor, mark=none, smooth] table[x index=#2, y expr={abs(\thisrowno{#3})}, skip first n={11}, header=false] {#1};
}
所有这些仅适用于一个图表。但如果我对多个文件执行此操作,则所有图表都具有相同的颜色(上次使用的颜色。在本例中:粉色的):
\begin{tikzpicture}
\begin{axis}[title=Prägestempel 1-4]
\plotvtf{./graph/praegestempel-1.vtf}{2}{4}{black}
\plotvtf{./graph/praegestempel-2.vtf}{2}{4}{red}
\plotvtf{./graph/praegestempel-3.vtf}{2}{4}{blue}
\plotvtf{./graph/praegestempel-4.vtf}{2}{4}{pink}
\end{axis}
\end{tikzpicture}
我不太明白这背后的逻辑......!?
欢迎任何提示和评论。
答案1
我没有您的数据文件,所以我将使用数学表达式。您可以在绘图选项中直接使用颜色参数。这样不仅可以更改颜色,还可以更改绘图的线条样式。
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\newcommand{\plotvtf}[2][]{%
\addplot+[ultra thick, mark=none, smooth,#1]{#2};
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\plotvtf[black]{x}
\plotvtf[red,dashed]{2*x}
\plotvtf[blue]{.5*x}
\end{axis}
\end{tikzpicture}
\end{document}
注意+
后面的\addplot
。\addplot+
使用正常循环列表并添加可选参数中的选项。没有 则+
仅使用给定的选项。所以
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\newcommand{\plotvtf}[2][]{%
\addplot+[ultra thick, mark=none, smooth,#1]{#2};
}
\begin{document}
\begin{tikzpicture}
\begin{axis}
\plotvtf{x}
\plotvtf{2*x}
\plotvtf{.5*x}
\end{axis}
\end{tikzpicture}
\end{document}
结果是
更新
这是您的文件的附加示例,\NewDocumentCommand
来自\xparse
@HenriMenke 的建议:
\documentclass[12pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usepackage{xparse}
\NewDocumentCommand\plotvtf{m m m O{}}{
\addplot+ [ultra thick, mark=none, smooth, #4]
table[x index=#2, y expr={abs(\thisrowno{#3})}, skip first n={11}, header=false]
{#1};
}
\begin{document}
\newcommand{\startschneiden}{4.87}
\newcommand{\startpraegen}{2.2}
\begin{tikzpicture}
\begin{axis}[
title=Auswerfer,
width=\linewidth,
height=8cm,
grid=both,
minor x tick num=9,
minor y tick num=1,
xtick distance=1,
% ytick distance=10,
xlabel={Distanz vor OT $\left[ mm \right] $ },
ylabel={Kraft in Tonnen $\left[ t \right] $},
x dir=reverse, % umkehren, weil mm vor OT
% y dir=reverse, % umkehren, weil Werte negativ sind
ymin=-0.5, % unten links beschränken
xmax=8.35, % mm vor OT, maximum. geht dann richtung null.
xmin=-0.05,
x tick label style={/pgf/number format/.cd, fixed, fixed zerofill, precision=1, /tikz/.cd},
legend pos=north west,
smooth,
extra x ticks={\startschneiden, \startpraegen},
extra x tick labels={Schneiden, Prägen},
extra x tick style={x tick label style={yshift=-2ex,anchor=north, rotate=0, color=green!50!black},grid=major,major grid style={draw=green!50!black, very thick}},
xlabel style={yshift=-3ex},
]
\plotvtf{praegestempel-1.vtf}{2}{4}[black]
\plotvtf{praegestempel-2.vtf}{2}{4}[orange]
\legend{Präger 1, Präger 2, Präger 3, Präger 4};
\node[draw=black, fill=white, fill opacity=0.8, text opacity=1] at (axis cs:7,4) [anchor=north west] {$F_{P max} = \pgfmathprintnumber{\pgfkeysvalueof{/pgfplots/ymax}}$};
\end{axis}
\end{tikzpicture}
\end{document}