LaTexで積み上げ棒グラフを描画する。コピぺあり。

こんにちはまだらです。

前回、LaTexで円グラフを描画するやり方を紹介したので今回は棒グラフを表示するやり方を紹介します。

2通りのやり方を調べましたので、お好きな方をご利用ください。

それでは早速やっていきましょう。

スポンサーリンク

棒グラフの描画①

お約束の棒グラフの描画に必要なパッケージを冒頭で読み込ませます。

\usepackage{bar,epic,eepic}

あとは、棒グラフを描画したい位置に下記の記述をしてください。
もちろんdocumetないですよ

\begin{figure}[htbp]
    \begin{barenv}
        \scalebox{1}[1]{
            \centering
            \setwidth{10} %バー幅
            \setyaxis{0}{100}{20} %start,end,メモリ
            \setstretch{1} %高さ拡大
            % \setyname{y軸名}
            % \setxname{x軸名}
            \sethspace{1}
            % \setstyle{フォント}\ttなど
            \bar{10}{1}[グラフ要素] %{値}{index}[コメント]
            \bar{10}{1}
            \bar{45}{2}
        }
    \end{barenv}
    \caption{図のタイトル}
\end{figure}

上記のコードを応用して、簡単な棒グラフの記述はできると思います。

棒グラフの描画②

もう一つご紹介しましょう。
ネットで英語で見つけたやつを頑張って、わかりやすくしたものです。

こちらも例のごとく、冒頭でパッケージを読み込ませます。
LaTexデフォルトのパッケージなのでダウンロード等は必要ありません。

\usepackage{pgfplots, pgfplotstable,booktabs}
\usetikzlibrary{positioning}
\pgfplotsset{compat=1.12}

まず、棒グラフに表示させるデータを定義しましょう。
1行目がカラムで、2行目以降は各棒グラフに使えるデータですね。
IDでソートして、棒グラフで用いるカラーを定義します。

%DB定義
\pgfplotstableread{
ID 文章 1 2 3 4 5
A あいう 20 20 20 20 20
B かきく 20 20 20 20 20
}\datatableunsort

\pgfplotstablesort[sort key={ID}]\datatable\datatableunsort %ソート

%カラー定義
\definecolor{ID}{RGB}{37,165,203}
\definecolor{文章}{RGB}{253,177,26}
\definecolor{1}{RGB}{105,105,105}
\definecolor{2}{RGB}{128,128,128}
\definecolor{3}{RGB}{192,192,192}
\definecolor{4}{RGB}{211,211,211}
\definecolor{5}{RGB}{220,220,220}

ちなみに、作成したDBはテーブルとして表示させることもできます。

\begin{figure}[htbp]
    \centering %センタリング
    \caption{タイトル}
    \pgfplotstabletypeset[
         fixed,fixed zerofill,precision=0,
         columns/ID/.style={column type=l,string type},
         columns/文章/.style={column type=l,string type},
          every head row/.style={
           before row={
            \toprule
             &&\multicolumn{5}{c}{選択} \\ \cmidrule{3-7}},
           after row={\midrule}},
         every last row/.style={after row=\bottomrule},
     ]{\datatableunsort}
\end{figure}

さて、いよいよグラフの描画です。
DBで複数のデータを1行に記述していると、積み上げグラフにすることができます。

下記の記述を好きなところに書きましょう。
コメントをつけているところは私が使用しなかった部分ですが、皆さんの中で使用する人もいると思うので残しておきました。

\begin{tikzpicture}
    \begin{axis}[
           % height=10cm,width=10cm,
           % title={2015 \textbf{RESULTS}},
           % every axis title/.append style={font=\Huge\sffamily,color=black!60},
           xbar stacked,   % Xバーを積み上げ
           bar width=7pt, % バーの幅
           enlargelimits={abs=4pt}, %X目盛り線
           axis line style={draw=none}, % 枠線
           % axis x line=none, % Xラベルの非表示
           ytick style={draw=none}, % Y目盛り線
           xmin=0,         % Start x
           ytick=data,     % ylabel
           yticklabels from table={\datatable}{対象},
           y tick label style={yshift=-2pt,black!70,font=\sffamily}, % Y要素スタイル
           legend style={ %判例のスタイル
              row sep=3pt, % increase spacing a bit
              name=ThaLegend, % used to position the #1s
              draw=none, % 判例の枠線
              at={(1,0)}, % legend position: places the anchor in the bottom right corner of the axis
              anchor=south west, % sets the anchor of the legend to the bottom left
              cells={anchor=west,font=\sffamily}}, % left align legend text, change font
          legend image code/.code={% defines how the legend is drawn
          \fill[#1] (0cm,-0.1cm) rectangle (0.28cm,0.18cm);
          }
    ]
    \addplot [fill=1,draw=none] table[x expr=\thisrow{1}*1, y expr=\coordindex] {\datatable};
    \addplot [fill=2,draw=none] table[x expr=\thisrow{2}*1, y expr=\coordindex] {\datatable};
    \addplot [fill=3,draw=none] table [x expr=\thisrow{3}*1, y expr=\coordindex] {\datatable};
    \addplot [fill=4,draw=none] table [x expr=\thisrow{4}*1, y expr=\coordindex] {\datatable};
    \addplot [fill=5,draw=none] table [x expr=\thisrow{5}*1, y expr=\coordindex] {\datatable};
    \legend{1,2,3,4,5}
    \end{axis}
\end{tikzpicture}

まとめ

円グラフに続き、LaTexでの棒グラフの描画方法について紹介しました。

実際、もっと調べれば3Dにしたりなど色んなオプションがあるので、木になる人は調べてみてください。

適当にとにかくコピペでさっさとLaTexの続きが書きたいという人はコピペでささっと切り抜けましょう。

ではでは。

スポンサーリンク

気に入ったらシェア!

フォローする

スポンサーリンク