如何删除 tikz 中的空白?

如何删除 tikz 中的空白?
\documentclass{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=none,axis equal]

\addplot+[no markers,thick] table [y=y1, x=x]{p=0_basis.dat};

\end{axis}
\end{tikzpicture}
\end{document}

下面是绘制 tikz 图形的代码: 在此处输入图片描述

我怎样才能删除这些空白,以使图形更紧凑?

谢谢

答案1

添加水平空间是因为enlargelimits默认情况下为真。由于它看起来如此,您会获得很多垂直空间axis equal。一种解决方法是明确设置yminymax,我不知道还有其他更自动的方法可以做到这一点,尽管可能有一种。在下面的代码中clip=false添加了,因为否则水平线的一半厚度将被剪掉。ymin/的不同值ymax将使这一点变得不必要。

红色矩形显示的是的边界框tikzpicture

在此处输入图片描述

\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
  hide axis,
  enlargelimits=false,
  ymin=0,
  ymax=1,
  axis equal,
  clip=false]

\addplot+[no markers,thick] table [y=y1, x=x]{
x y1
0 1
1 1
1 0
4 0
};

\end{axis}
\draw [red] (current bounding box.south east) rectangle (current bounding box.north west);
\end{tikzpicture}
\end{document}

答案2

Torbjørn 答案中的变化已经融入到hide axis使用时设置的密钥背后的底层代码中axis lines=none。有一个广泛的机制来确保向后兼容性,这样即使包已经更新,pgfplots现有的图看起来仍然相同。pgfplots

要利用此功能,请始终设置pgfplots'compat键。如果您不设置它,甚至会出现警告:

Package pgfplots Warning: running in backwards compatibility mode (unsuitable t
ick labels; missing features). Consider writing \pgfplotsset{compat=1.13} into 
your preamble.

如果没有设置compat密钥,pgfplots则进入“后备”模式,所有密钥的效果与引入时相同。这意味着我们没有看到hide axis1.8 版中引入的密钥的改进。

设置compat为 1.8 或更高版本(撰写本文时最新版本为 1.13)可访问hide axis代码的改进:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13} % or anything >= 1.8

\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=none,axis equal]
\addplot+[no markers,thick] coordinates {(0,0) (1,0) (1,1) (2,1)};
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

建议在创建图时将密钥设置为当前版本,除非您特别需要旧版本。这样,您可以获得所有最新功能/修复,但如果您将来再次访问该文档,图将保持相同的外观,直到您选择更改密钥设置compat

相关内容