当文档中使用图时,独立 pgfplot 中的图例位置会移动

当文档中使用图时,独立 pgfplot 中的图例位置会移动

以下 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也输入独立文档的选项,图例位置是相同的。

相关内容