更改 pgfplot 中的空白边框,或裁剪 PDF 图形?

更改 pgfplot 中的空白边框,或裁剪 PDF 图形?

我正在尝试一些pgfplot数据呈现方式。它可以制作出非常漂亮的图表,但不幸的是,它对我的​​空间不是很节省。使用多列布局时会出现这个问题。有人知道如何减少图表周围的额外空白边距,并可能将轴标签移近轴吗?到目前为止,我在 matlab 中执行此操作并导出为 PDF,可以获得更多“物有所值的图表”。

如果有人知道在 LaTeX 中插入时裁剪 PDF 图像的便捷方法,那也可能会有效,因为我可以将 pgf-plot 导出为 PDF 文件,然后插入该文件的裁剪版本。

答案1

正如 Martin 所说,通常图表周围不应该有任何不必要的空白。以下是两列布局的图表示例,其中tikzpicture使用该backgrounds库绘制了封闭的背景矩形:

\documentclass[twocolumn]{article}
\usepackage{lipsum}
\usepackage{float}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}
\begin{document}
\lipsum[1]
\begin{figure}[H]
\begin{tikzpicture}[show background rectangle,tight background]

\begin{axis}[
    width=\columnwidth,
    xlabel=Independent Variable,
    ylabel=Dependent Variable]
\addplot {1000*rand};
\end{axis}

\end{tikzpicture}
\caption{Standard options}
\end{figure}

\lipsum[2-6]
\end{document}

pgfplots 采用两列布局

要将轴标签移近轴,可以使用选项xlabel style={yshift=<length>}}和。请注意,即使 y 轴标签将水平移动,ylabel style={yshift=<length>}}您也需要在两种情况下使用。这是必要的,因为将在标签旋转之前应用。yshiftshift

...
\begin{axis}[
    width=\columnwidth,
    xlabel style={yshift=0.75em},
    ylabel style={yshift=-0.5em},
    xlabel=Independent Variable,
    ylabel=Dependent Variable]
\addplot {1000*rand};
\end{axis}
...

带有移位轴标签的 pgfplots

在某些情况下,可能需要更改绘图的视宽,以允许刻度标签和轴标签超出图像区域。这可以通过使用包含环境的trim axis left选项来实现。要获得最大绘图宽度,您可以使用选项,这意味着大小选项仅考虑绘图区域,但忽略标签。这只在左列中有意义。tikzpictureaxisscale only axis

...
\begin{tikzpicture}[show background rectangle,tight background,
    trim axis left]

\begin{axis}[
    scale only axis,
    width=\columnwidth,
    xlabel=Independent Variable,
    ylabel=Dependent Variable]
\addplot {1000*rand};
\end{axis}
...

pgfplots 带有修剪轴左

答案2

据我所知,通常不应该有额外的大边距pgfplots(我自己不经常使用它)。无论如何,您可以通过将其放置在包之间来手动修剪周围的任何空间\begin{adjustbox}[trim=<left> <bottom> <right> <top>] ... \end{adjustbox}adjustbox这只会修剪图的官方大小,如果您还添加选项,clip任何悬垂也会明显被移除。

pdfcrop可以使用专门为 LaTeX 创建的工具来裁剪 PDF 图像。

为了完整起见,我还提到了standalone可用于从 LaTeX 代码生成紧密裁剪的 PDF(或 DVI/PS)图像的类(使用 greatpreview包)。将复杂的pgfplots或转换tikzpictures为 PDF 可以大大减少编译时间。另请参阅相关的externalTikZ 库。的下一个版本standalone将包含一些自动编译和使用 TeX 或 PDF 的功能。

答案3

您可以直接在 LaTeX 文件中裁剪 PDF 图像,如以下示例所示。

\begin{figure}[tb]
\centering
\includegraphics[width=80mm,trim=5 4 2 5 mm, clip=true]{image.pdf} %Left, bottom, right, top
\caption{Cropped image}  
\label{crop}
\end{figure}    

相关内容