以下 mwe 显示,当在包含它的文档中缩放独立版本时,pgfplot 中的图例位置会发生变化。
独立:
来自司机:
(我更改了尺寸以发布较小的图片。)
这是 mwe:
独立:
\documentclass[border=5mm]{standalone}
\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}
\pgfplotsset{compat=1.8}
\begin{document}
\pgfplotstableread[col sep=comma]{
category, mass, other
{dollars\\\$3.14m}, 31, 69
{donors\\56k}, 21, 79
}\warren
\newcommand{\plotsize}{width=6cm, height=5cm}
\newcommand{\legendoffset}{(0.185, 0.5)} %fraction of plotsize
\pgfplotsset{every axis legend/.append
style={at={\legendoffset},anchor=north west}
}
\begin{tikzpicture}
\begin{axis}[
ybar stacked,
ymin=0,
ymax=100,
bar width=35pt,
enlarge x limits={abs=20pt},
\plotsize,
hide y axis,
axis x line*=top,
axis line style={opacity=0},
xtick style={opacity=0},
xtick=data,
xticklabel style={align=center},
xticklabel pos=upper,
xticklabels from table={\warren}{category},
point meta=explicit,
]
\legend{Massachusetts, out of state};
\addplot [fill=blue] table [x expr =\coordindex, y=mass, meta=mass] {\warren};
\addplot [fill=yellow] table [x expr =\coordindex, y=other,
meta=other]{\warren};
\end{axis}
\end{tikzpicture}
\end{document}
司机:
\documentclass[12pt]{article}
\usepackage{standalone}
\usepackage{tikz,pgfplots}
\usepackage{pgfplotstable}
\newcommand{\scalepicture}{15cm}
\begin{document}
\resizebox{\scalepicture}{!}
{
\input{mwe}
}
\end{document}
编辑:以下猜测是错误的——我很高兴没有人花时间去实现它。
我确信这种情况发生是因为图例位置是相对于绘图大小指定的,而其他绘图功能(例如nodes near coords
具有可正确缩放的绝对位置)的。如果我是对的,那么一个可能的解决方案是
\newcommand{\calculatelegendoffset}[5]{%
% #1 plotwidth (cm)
% #2 plotheight (cm)
% #3 legendxposition (cm)
% #4 legendyposition (cm)
% #5 scalefactor
}
但当然,任何优雅的通用解决方案都是受欢迎的。
答案1
resizebox
只能拉伸或收缩其全部内容,无法重新排列图形中的组件。这里的问题在于您在独立文档和主文档中使用的字体大小不同。如果您12pt
也输入独立文档的选项,图例位置是相同的。