两个 y 轴 pgfplot 与 ylabel 和 width=\linewidth 严重对齐

两个 y 轴 pgfplot 与 ylabel 和 width=\linewidth 严重对齐

我试图绘制一个pgfplot带有不同 y 轴的 ,它们各自的标签位于全线宽度内,但我无法tikzpicture在边距内对齐整体。问题似乎来自 ylabel,它在左轴上将图移到右侧,而在右轴上绘制在图片之外,即在边距中。我尝试添加 ,ylabel style={overlay}以便将图居中,但ylabel这次两者都在边距中。当然,我可以放一个0.95\linewidth,但我发现这个解决方案不够好,因为它不是通用的。

有谁知道如何以自动方式修复这个小例子(意味着pgfplot或者tikz单独找到正确的宽度)?

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}

\begin{document}
\centering{}
\hrule{}
I\hfill I\hfill I\\
\begin{tikzpicture}
\begin{axis}[
  width=\linewidth,
  xmin=-5,xmax=5,
  axis y line*=left,
  axis x line*=top,
  ylabel={$y=x^{2}$ label},
  ]
  \addplot {x^2};
\end{axis}
\begin{axis}[
  width=\linewidth,
  xmin=0,xmax=15,
  domain=0:15,
  axis y line*=right,
  axis x line*=bottom,
  ylabel={$y=x$ label},
  ]
  \addplot[red] {x};
\end{axis}
\end{tikzpicture}

\end{document}

这产生了这个不一致的情节

在此处输入图片描述

答案1

当然,如果你画的东西比线宽更宽,那么对象就会超出右边距。有两种可能:

\makebox[\linewidth]{%
  \begin{tikzpicture}
  ...
  \end{tikzpicture}}

这将使轴的标签留在左边和右边距;或者

\resizebox{\linewidth}{!}{%
  \begin{tikzpicture}
  ...
  \end{tikzpicture}}

(使用graphicx包)将重新缩放图表以适合线宽。

当然,最好的解决办法是

width=.8\linewidth

(或您喜欢的任何内容),忘记装箱和重新缩放。没有法律规定图表必须填充线宽;相反,我认为,如果可能的话,应该优先选择比线宽更短的图表。

相关内容