pgfplots 中是否有可能设置为 x 和 y 标签保留的边距,类似于 gnuplots tmargin、bmargin、lmargin、rmargin。
我希望水平方向有以下值。
lmargin: 0.3in
graphwidth=\columnwidth-0.4in
rmargin: 0.1in
plotwidth: \columnwidth (=picture width)
对于垂直方向:
bmargin: 0.3in
graphheight=4in-0.4in
tmargin: 0.1in
plotheight: 4in (=picture height)
以下最小工作示例尝试仅缩放轴(选项scale only axis
),然后相应地用负值进行修剪。
梅威瑟:
\documentclass[class=elsarticle,preprint,5p,twocolumn, 10pt]{standalone}
% NOTE: 'standalone' messes up \textheight,
% \textwidth and \columnwidth (252pt) are fine
\usepackage{pgfplots}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\pgfplotsset{compat=1.12,width=\columnwidth,height=4in}
\begin{document}
\begin{tikzpicture}[trim left=-0.3in, trim right=\columnwidth-0.3in]
% why is there no trim top or bottom?
\begin{axis}[width=\columnwidth-0.4in, height=4in-0.3in, scale only axis]
\addplot [red, mark=*] table {
0 1
2 5.5
3 7.25
4 8
};
\end{axis}
\end{tikzpicture}
\end{document}
检查 pdf 尺寸:
$ pdfinfo *.pdf | grep "Page size:"
Page size: 251.059 x 279.86 pts
宽度几乎正确:251.059pt 而不是 252pt。可能是数值错误(仅单精度)。所以我可以忍受。
但是没有顶部装饰和底部装饰。我找不到解决方法。有人能帮我吗?
也可能是裁剪的问题standalone
。tikzscale
速度真的很慢,所以我宁愿避免它。应该有一张最终的图片,我可以提交给期刊。
答案1
通过调整边界框来设置\pgfresetboundingbox
边距scale only axis
Pgfplots 手册在第 4.20.1 章中描述了如何调整边界框边界框限制(v1.12)
% Measures:
% ---------
% total width = \columnwidth = 252pt = 3.49in
% total height = 4in = 288pt
% lmargin = 0.4in
% rmargin = 0.1in
% bmargin = 0.4in
% tmargin = 0.1in
% graph width = \columnwidth - 0.5in
% graph height = 4in - 0.5in
平均能量损失
\documentclass[class=elsarticle, preprint, 5p, twocolumn, 10pt]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{backgrounds}% required for 'inner frame sep' or 'tight background'
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}[inner frame sep=0]
% 'tight background' is identical to 'inner frame sep=0'
\begin{axis}[
width=\columnwidth-0.5in,
height=4in-0.5in,
scale only axis,
ylabel=Y-Value,
xlabel=X-Value
]
\addplot [red, mark=*] table {
0 1
2 5.5
3 7.25
4 8
};
\end{axis}
% Set margins by adjusting the bounding box:
\pgfresetboundingbox
\path
(current axis.south west) -- ++(-0.4in,-0.4in)
rectangle (current axis.north east) -- ++(0.1in,0.1in);
\end{tikzpicture}
\end{document}
笔记
\pgfresetboundingbox
external
与库不兼容inner frame xsep/ysep
通过不允许独立设置 lmargin 和 rmargin 来调整边距(tmargin 和 bmargin 相同)(@zeroth 在评论中建议)
确认的措施
$ pdfinfo *.pdf | grep "Page size:"
Page size: 251.055 x 287.996 pts