LaTeXで表の中の棒グラフを描画

LaTeXを文書中の表の中などでデータを可視化するために手軽に棒フラフを書けるようにする。[xcolor.sty: LaTeX パッケージ]のサイトの「booktabs.styを伴う。」が元ネタ。

棒グラフを実現するために以下の内容をプリアンブルに記入。

\newlength{\basis}\setlength{\basis}{10cm} \newlength{\barlength}
\newcommand*{\barchart}[1]{%
  \setlength{\barlength}{0.01\basis}\setlength{\barlength}{#1\barlength}%
  \textcolor{black!40}{\rule{\barlength}{1.5ex}} #1}

元のサイトのサンプルは\Barコマンドで定義されている。このコマンド名はamsmath.styの同名コマンドと競合する。そのため,\Bar\barchartという名前に置き換える。また,単位%は邪魔なので除去した。

これにより,以下のコマンドで長さ10 cmの横棒グラフが書ける。

\barchart{100}

ただし,長さの都合から棒グラフで使う値は0–100程度の範囲の値が適している。この範囲外なら、うまく%や正規化してこの範囲に値を収める。値をマイナスにすると棒グラフが表示されない。

\barchart{-10}

表の中に書いてそれっぽく見せるには例えば以下のようにする。グラフを書くところを左寄せにすることが大事。

\begin{center}
  \begin{tabular}{ll}
  \toprule 
  year & value {[}\%{]}\tabularnewline
  \midrule
  2000 & \barchart{50}\tabularnewline
  \midrule 
  2010 & \barchart{30}\tabularnewline
  \bottomrule
  \end{tabular}
\par
\end{center}

サンプル全体

\documentclass[uplatex]{jsarticle}
% \file      barchart.tex
% \author    SENOO, Ken
% \copyright CC0
% \brief     以下のコマンドでタイプセットする。
% uplatex barchart && dvpidfmx barchart

\usepackage{xcolor,booktabs} \newlength{\basis}\setlength{\basis}{10cm} \newlength{\barlength} \newcommand*{\barchart}[1]{% \setlength{\barlength}{0.01\basis}\setlength{\barlength}{#1\barlength}% \textcolor{black!40}{\rule{\barlength}{1.5ex}} #1} \begin{document} \barchart{100} \barchart{-10} \begin{center} \begin{tabular}{ll} \toprule year & value {[}\%{]}\tabularnewline \midrule 2000 & \barchart{50}\tabularnewline \midrule 2010 & \barchart{30}\tabularnewline \bottomrule \end{tabular} \end{center} \end{document}

実行結果

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です