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