如何正确缩放具有 `\begin{axis}...\end{axis}` 的 TikZ/PGF 图片

如何正确缩放具有 `\begin{axis}...\end{axis}` 的 TikZ/PGF 图片

将缩放选项应用于 TikZ 图片效果很好。它使文本保持适当的大小并缩放其他所有内容。我希望在使用时有相同的行为\begin{axis}...\end{axis}

考虑以下情况,其中第一个图形不使用环境{axis}。更改比例效果很好。但是,尝试将第二个图形的比例选项更改\begin{tikzpicture}scale=1.5。这会导致 x 和 y 轴标签远离轴。

此外,我没有看到应用于的比例选项有明显的变化\begin{axis}。我没有看到任何错误消息抱怨它,所以它一定是一个有效的选项。

\documentclass{article}
\usepackage{pgfplots}

\begin{document}
\begin{tikzpicture}[scale=1.0]
\draw [->][gray, thin](-3,0) -- (3,0)
    node[blue, right] {$x$}; 

\draw [->][gray, thin] (0,-3) -- (0,3)
    node[blue, above] {$y$};
\end{tikzpicture}

\begin{tikzpicture}[scale=1.0]
\begin{axis}[scale=1.5 % Has no effect
    minor tick num=0, 
    axis y line=center, 
    axis x line=middle, 
    xmin=-3,
    xmax=3, 
    ymin=-3,
    ymax=3,
    xlabel=$x$,
    ylabel=$y$
    ]
\end{axis}
\end{tikzpicture}
\end{document}

另外,我发布此文后还有另外一个小问题:如何让其中的 x,y 标签{axis}位于右侧和顶部,就像在第一个例子中一样?

答案1

为了调整图的大小而不改变文本大小,您应该使用widthheight选项。遗憾的是,没有比例选项:您必须自己乘以宽度和高度。

开发版本包含选项x post scale和(在源代码中y post scale已标记,但似乎工作正常)。这实际上会增加绘图的和,因此它实际上不仅仅是缩放:根据您增加还是减少绘图的大小,您将获得更多或更少的刻度线。我相信这是明智的做法,但可能不是您需要的?EXPERIMENTALwidthheight

要使用 TeXLive 安装开发版本,你可以使用命令 sudo -i tlmgr update pgfplots --repository http://tlcontrib.metatex.org/2010

然后,您可以定义一种新scale样式,将所有post scale选项同时设置为相同的值:

\pgfkeys{/pgfplots/scale/.style={
  x post scale=#1,
  y post scale=#1,
  z post scale=#1}
}

为了将x label和放置y label在轴的末端,您可以使用以下选项:

xlabel style={at={(current axis.right of origin)}, xshift=1.5ex, anchor=center},
ylabel style={at={(current axis.above origin)}, yshift=1.5ex, anchor=center}

这是一个完整的例子:

\documentclass{minimal}
\usepackage{pgfplots}

\begin{document}
\pgfkeys{/pgfplots/scale/.style={
  x post scale=#1,
  y post scale=#1,
  z post scale=#1}
}

\pgfkeys{/pgfplots/axis labels at tip/.style={
    xlabel style={at={(current axis.right of origin)}, xshift=1.5ex, anchor=center},
    ylabel style={at={(current axis.above origin)}, yshift=1.5ex, anchor=center}}
}

\begin{tikzpicture}
\begin{axis}[
    axis y line=center, axis x line=middle, xmin=-3, xmax=3, ymin=-3, ymax=3, xlabel=$x$,ylabel=$y$,
    axis labels at tip
    ]
\end{axis}
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[
    scale=0.6,
    axis y line=center, axis x line=middle, xmin=-3, xmax=3, ymin=-3, ymax=3, xlabel=$x$,ylabel=$y$,
    axis labels at tip
    ]
\end{axis}
\end{tikzpicture}
\end{document}

缩放 pgfplots 图

相关内容