我想要实现的目标

我想要实现的目标

根据打击乐的回答\input 或 \include 语句的参数?环境中的height和都可以用嵌套语句在外部(环境之外)设置:widthaxisPGFplotsaxis\pgfplotsset

\pgfplotsset{execute at begin axis={\pgfplotsset{width=5cm}}} 

但是,如果我尝试将相同的概念应用于xmin,,并且根据 Piotr 建议的答案,似乎不会覆盖环境中给出的设置。xmaxyminymaxpgfplotssetaxis

考虑以下 MWE:

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
{ % begin outer pgfplotsset scope
\pgfplotsset{ymax=5, ymin=1, execute at begin axis={\pgfplotsset{width=5cm}}}
\begin{tikzpicture}
\begin{axis}[width=10cm, ymin=0]
    \addplot {x^2};
\end{axis}
\end{tikzpicture}
} % end outer pgfplotsset scope
\end{document}

它生成了以下图表,其中ymin显然 是0,尽管我只是将其设置ymin=1pgfplotsset

在此处输入图片描述


我想要实现的目标

从环境外部设置xminxmax和(与我在 中应用的方式类似),即使它们也将在 中指定。对 等 的外部调用应覆盖 中设置的值。yminymaxaxiswidthexecute at begin axispgsplotsset\begin{axis}[]xmin\begin{axis}[]


答案1

嗯,根据他们的选择实际上做什么,我们可以简单地将其停用。

该键以(需要空格)overwrite option的形式采用其参数,将键设置为该值,然后通过分配一个空的 来完全禁用该键。<key> with <value>/.code

代码

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\pgfplotsset{overwrite option/.style args={#1 with #2}{#1=#2,#1/.code=}}
\begin{document}
{ % begin outer pgfplotsset scope
\pgfplotsset{ymax=5, overwrite option=ymin with 1, execute at begin axis={\pgfplotsset{width=5cm}}}% the ymin key doesn't work anymore
\begin{tikzpicture}
\begin{axis}[width=10cm, ymin=0]
    \addplot {x^2};
\end{axis}
\end{tikzpicture}
} % end outer pgfplotsset scope
% the ymin key works as usual
\end{document}

答案2

\pgfplotsset{xmin=...}在所需范围内使用:

\documentclass[landscape]{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
{ % begin pgfplotsset scope
\pgfplotsset{xmin=0, xmax=3, ymin=1, ymax=5}
\begin{tikzpicture}
\begin{axis}[width=10cm]
    \addplot {x^2};
\end{axis}
\end{tikzpicture}
} % end pgfplotsset scope
\begin{tikzpicture}
\begin{axis}[width=10cm]
    \addplot {x^2};
\end{axis}
\end{tikzpicture}
\end{document}

这将导致: 结果

答案3

您正在寻找的是every axis post/.append style关键,据我所知,它是在之前的轴样式之后执行的,因此会覆盖它们。因此解决方案非常简单:

\documentclass[border=2pt,convert={ghostscript, density={500}}]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
{ % begin outer pgfplotsset scope
\pgfplotsset{ymax=5, execute at begin axis={\pgfplotsset{width=5cm}},
every axis post/.append style={ymin=1}}
\begin{tikzpicture}
\begin{axis}[width=10cm, ymin=0]
    \addplot {x^2};
\end{axis}
\end{tikzpicture}
} % end outer pgfplotsset scope
\end{document}

阴谋

相关内容