如何向图像添加比例尺

如何向图像添加比例尺

我正在尝试找出如何最好地向我的图像添加比例尺,例如在这些奇妙的雪花图像中(全尺寸图像有点大,但它是我正在尝试做的最好的例子):

一种可能性是使用不同的程序插入比例尺。但是,我想确保文本美观清晰,而不是将其保存为光栅图像的一部分。此外,如果我事先插入比例尺,那么当 LaTeX 缩放图像时,文本的大小会调整。

到目前为止,我还没有找到任何现有的命令或包可以轻松实现这一点。我希望能够指定图像的真实世界大小,并计算比例尺的大小。

如果我必须编写自己的宏,我想我会从overpic 封装

我走的方向正确吗?

编辑2:

熟悉 TikZ 之后,我想出了以下宏:

\usepackage{tikz}
\usepackage{siunitx}

% Inserts a scale bar into an image
% Optional argument 1: the colour of the bar and text
% Argument 2: an \includegraphics command
% Argument 3: the real world width of the image
% Argument 4: the length of the scale bar
% Argument 5: the units in which the scale bar is measured
\newcommand{\scalebar}[5][white]{
 \begin{tikzpicture}
  \draw (0,0) node[anchor=south west,inner sep=0] (image) { #2 };
  \begin{scope}[x={(image.south east)},y={(image.north west)}]
   \fill [#1] (0.05,0.2cm) rectangle (#4/#3+0.05,0.4cm);
   \draw [#1] (0.05,0.4cm) node[anchor=south west] { \SI{#4}{#5} };
  \end{scope}
 \end{tikzpicture}
}

我在这里使用了多种单位(厘米和图像大小的分数)。我觉得这方面可以更优雅一些,但目前我的单位已经足够了。

答案1

我对您的宏进行了一些调整,以便在文本变得难以阅读时添加透明背景:

\newcommand{\scalebarbackground}[6][white]{
 \begin{tikzpicture}
  \node[anchor=south west,inner sep=0] (image) { #2 };
  \begin{scope}[x={(image.south east)},y={(image.north west)}]
   \fill [fill=blue, fill opacity=0.5] (0.04,1.3em) rectangle (#5*#4/#3+0.04,0.1em);
   \draw [#1, line width=0.2em] (0.04,1.2em) -- node[below,inner sep=0.1em, font=\footnotesize] {\SI{#5}{#6}} (#5*#4/#3+0.04,1.2em);
  \end{scope}
 \end{tikzpicture}
}

最终的比例尺如下所示: 带背景的比例尺

请参阅我的要点以获取更多信息和没有背景的比例尺:https://gist.github.com/rbnvrw/00312251b756f6b48084#file-latexscalebars-md

答案2

我发现国际环境政策研究所成为实现这一目标的一个很好的工具。

ipelets->插入图像。

然后添加文本并保存为 eps 或 pdf。

相关内容