我希望用宏(或其他替代方法)来定义迷你图的数据系列,而不是在环境本身中明确设置sparkline
。到目前为止,我的尝试都失败了。作为 MWE,以下方法可以做到:
\documentclass[12pt]{memoir}
\usepackage{xcolor,tikz,sparklines}
\begin{document}
\xdef\SparkMacro{0 1 0.5 1.5 1 0.25}
\renewcommand{\sparklineheight}{1.75}
\begin{sparkline}{3}
\sparkrectangle 0 1.75
\spark \SparkMacro\ / % doesn't work
% \spark 0 1 0.5 1.5 1 0.25 /% does work
\end{sparkline}
\end{document}
我怎样才能将这些数据传递到环境中sparkline
而不需要明确地输入(或复制和粘贴)它们?
答案1
您需要\expandafter
先扩展数据,然后\spark
才能看到它。此外,您需要一个真正的空格,而不是\
末尾的空格。最简单的方法是确保您的宏以空格结尾。
\documentclass[12pt]{memoir}
\usepackage{xcolor,tikz,sparklines}
\begin{document}
\xdef\SparkMacro{0 1 0.5 1.5 1 0.25 }
\renewcommand{\sparklineheight}{1.75}
\begin{sparkline}{3}
\sparkrectangle 0 1.75
\expandafter\spark \SparkMacro / % doesn't work
%\spark 0 1 0.5 1.5 1 0.25 /% does work
\end{sparkline}
\end{document}
答案2
在是否有一个软件包可以提供 Ed Tufte 风格的图形?我创建了一个 sparklines 解决方案,它不是基于 sparkline 包,而是基于 pgfplots。
其优点是:您可以通过数值表提供输入,提供数值表并根据该表上的数学表达式绘制数据,或者立即提供数学表达式。
所提到的解决方案具有条形图、线图和散点图,还可以自动确定最小/最大坐标。