如何使用宏存储默认的 pgfplot 属性

如何使用宏存储默认的 pgfplot 属性

我的 pgfplots 图有一些默认设置,例如xlabel、等等。由于我有大量这样的图ylabelwidth并且不想重复所有属性,所以我想将它们存储在命令中并使用该命令打印这些属性。这可能吗?我该如何解决这个问题?

笔记我不想更改 pgfplots 的默认设置。我想使用一个命令打印一组特定的属性。

以下是属性的一个示例:

\newcommand{\tikzDefaults}[0]{
                        xlabel=$k$,
                        ylabel=$C$,
                        width=6.4cm,
                        height=5cm,
                        cycle list name=best,
                        enlargelimits=0,
                        every axis/.append style={font=\tiny},
                        legend entries={A1, A2, S1, S2, E1, E2, FF},
                        x tick label style={/pgf/number format/1000 sep=},
                        x label style={at={(axis description cs:0.5,0.15)},anchor=north},
                        y label style={at={(axis description cs:0.18,.5)},anchor=south},
}

答案1

\pgfplotsset{tikzDefaults/.style=
  {xlabel=$k$,
   ylabel=$C$,
   width=6.4cm,
   height=5cm,
   cycle list name=best,
   enlargelimits=0,
   every axis/.append style={font=\tiny},
   legend entries={A1, A2, S1, S2, E1, E2, FF},
   x tick label style={/pgf/number format/1000 sep=},
   x label style={at={(axis description cs:0.5,0.15)},anchor=north},
   y label style={at={(axis description cs:0.18,.5)},anchor=south},}}

然后用作tikzDefaults选项。它会“保存”其中的所有选项。

答案2

在大多数情况下,Manuel 的解决方案是可行的,但如果您确实想要一个开关类型的命令来打开这些设置,那么这也是可能的。

该示例显示了使用分组概念限制命令的效果。在组结束之前,axis命令之后的所有环境\tikzDefaults都将获取您在命令中定义的键值对。

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11,width=3.5cm}% just to fit the example on a single page

\newcommand{\tikzDefaults}[0]{
  \pgfplotsset{
    xlabel=$k$,
    ylabel=$C$,
    width=6.4cm,
    height=5cm,
%    cycle list name=best, % I don't have this cycle list defined
    enlargelimits=0,
    every axis/.append style={font=\tiny},
    legend entries={A1, A2, S1, S2, E1, E2, FF},
    x tick label style={/pgf/number format/1000 sep=},
    x label style={at={(axis description cs:0.5,0.15)},anchor=north},
    y label style={at={(axis description cs:0.18,.5)},anchor=south},
  }
}

\newcommand{\drawplot}[1]{% just for the example
  \begin{figure}
  \centering
  \begin{tikzpicture}
  \begin{axis}[title=#1]
    \addplot {x};
  \end{axis}
  \end{tikzpicture}
  \end{figure}
}

\begin{document}
\drawplot{Outside group; before outer command}
{% the start of a group
\drawplot{Inside group; before outer and inner commands}
\tikzDefaults
\drawplot{Inside group; after inner command}
}% the end of the group
\drawplot{Outside group; before outer command}
\tikzDefaults
\drawplot{Outside group; after outer command}
\end{document}

在此处输入图片描述

答案3

您可以通过 打印变量的值\pgfmathprintnumber,例如在轴环境中,我可以打印该xmax\pgfmathprintnumber{\pgfplotsxmax},其中\newcommand{\pgfplotsxmax}{\pgfplots@xmax}在序言中定义

相关内容