![如何正确缩放具有 `\begin{axis}...\end{axis}` 的 TikZ/PGF 图片](https://linux22.com/image/236847/%E5%A6%82%E4%BD%95%E6%AD%A3%E7%A1%AE%E7%BC%A9%E6%94%BE%E5%85%B7%E6%9C%89%20%60%5Cbegin%7Baxis%7D...%5Cend%7Baxis%7D%60%20%E7%9A%84%20TikZ%2FPGF%20%E5%9B%BE%E7%89%87.png)
将缩放选项应用于 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
为了调整图的大小而不改变文本大小,您应该使用width
和height
选项。遗憾的是,没有比例选项:您必须自己乘以宽度和高度。
开发版本包含选项x post scale
和(在源代码中y post scale
已标记,但似乎工作正常)。这实际上会增加绘图的和,因此它实际上不仅仅是缩放:根据您增加还是减少绘图的大小,您将获得更多或更少的刻度线。我相信这是明智的做法,但可能不是您需要的?EXPERIMENTAL
width
height
要使用 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}