表格内的条形图 - 条形后的值

表格内的条形图 - 条形后的值

嗨,我刚开始使用 latex,但到目前为止我很喜欢它。我正在使用 Rmarkdown 和 xtable 创建一个表格,表格末尾有一个图表。

两年前有人问过一个问题——是否可以在表格中创建条形图?- 关于如何在表格中创建条形图。效果非常好。

我的问题:我可以在图表后面加一个数字吗?

我正在寻找:
在此处输入图片描述

如果这不可能那么:
在此处输入图片描述

A.Ellett 的解决方案如下: 在此处输入图片描述
解决方案是:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{array}
\usepackage{xcolor}
\def\mybar#1{%%
  #1s & {\color{red}\rule{#1cm}{8pt}}}

\pagestyle{empty}
\begin{document}

\begin{tabular}{>{$\rhd$ }lrl}
Loop at line 151 in divergence  & \mybar{3.420}\\
Loop at line 1071 in radiation  & \mybar{3.270}\\
scalar face value               & \mybar{3.090}\\
Loop at line 102 in get         & \mybar{1.700}\\
get sensible enthalpy           & \mybar{1.250}\\
\end{tabular}

\end{document}

这里他添加了一个包含值的新列。由于对齐问题,Xtable 无法处理这个额外的列。没有这个额外的列可以完成此操作吗?

我目前的解决方案:
乳胶头:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{array}
\usepackage{xcolor}
\definecolor{blueColor}{rgb}{0,.30667,.55111}
\def\mybar#1{%%
 {\color{blueColor}\rule{#1mm}{9pt}}} %I only want the bar, not the extra column

xtable 解决方案:

align <- paste0(c("L{4cm}", rep("C{15mm}", 4), "L{3cm}"), collapse = "")
latexGraph <- function(x) gsub('GRAPH(.*)',paste('\\\\mybar{\\1}'),x)

print(xtable(x, align=align, auto = TRUE),
  sanitize.text.function = latexGraph) #To add the graph to the table

我的函数现在的工作方式是:我有一列数字,例如 (1、2、3、4、5)。要将这些数字更改为图形,我将这些数字更改为:,,,,,GRAPH1。然后Xtable 使用我的函数 (latexGraph) 来“清理”此列。该函数将更改为。GRAPH2GRAPH3GRAPH4GRAPH5GRAPH4\mybar{\4}

答案1

按照您在评论中所说的,这更容易,您只需更改\mybar命令中的顺序:

\def\mybar#1{%%
  {\color{red}\rule{#1cm}{8pt}} #1s} % See the #1s repeating itself?

MWE 如下所示:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{array}
\usepackage{xcolor}
\def\mybar#1{%%
  {\color{red}\rule{#1cm}{8pt}} #1s}

\pagestyle{empty}
\begin{document}

\begin{tabular}{>{$\rhd$ }ll}
Loop at line 151 in divergence  & \mybar{3.420}\\
Loop at line 1071 in radiation  & \mybar{3.270}\\
scalar face value               & \mybar{3.090}\\
Loop at line 102 in get         & \mybar{1.700}\\
get sensible enthalpy           & \mybar{1.250}\\
\end{tabular}

\end{document}

结果如下:

在此处输入图片描述

但如果你要排版很多数字,我建议你使用siunitx包提供了大量用于排版数字和单位的工具,下面是一个 MWE siunitx(该命令\sisetup设置了所处理的所有数字和单位的格式siunitx):

\documentclass{article}
\usepackage{amsmath,amssymb,siunitx}
\sisetup{output-decimal-marker={,}, round-mode=places, round-precision=2}
\usepackage{array}
\usepackage{xcolor}
\def\mybar#1{%%
  {\color{red}\rule{#1cm}{8pt}} \SI{#1}{\second}}

\pagestyle{empty}
\begin{document}

\begin{tabular}{>{$\rhd$ }ll}
Loop at line 151 in divergence  & \mybar{3.420}\\
Loop at line 1071 in radiation  & \mybar{3.270}\\
scalar face value               & \mybar{3.090}\\
Loop at line 102 in get         & \mybar{1.700}\\
get sensible enthalpy           & \mybar{1.250}\\
\end{tabular}

\end{document}

结果几乎相同,但现在数字遵循指定的格式\sisetup,并且单位和数字之间有一个很细的空格。

在此处输入图片描述

相关内容