- Deepayan Sarkar, 2008: Lattice: Multivariate Data Visualization with R. New York: Springer Science+Business Media LLC, 265 pp. ISBN 978-0-387-75968-5 (paperback)
- D. ショーカー 著, 石田 基広, 石田 和枝 訳, 2009: Rグラフィックス自由自在。シュプリンガー・ジャパン, 296 pp. ISBN 978-4-431-10089-0. 2020年現在、丸善出版から発売、ISBN 978-4-621-06164-0 . 出版社サイトの本書のページ https://www.maruzen-publishing.co.jp/item/b294248.html
出版社や装丁は、英語版、日本語版とも、『Data Manipulation in R / Rデータ自由自在』[読書メモ]と同じだ。英語版は2008年に出た。わたしは2008年3月に(出版社だったか通信販売業者だったかの新刊情報をみて)注文した。日本語版は2009年12月に出て、わたしはすぐ店頭で買った。しかし、ほとんど読まないまま来てしまった。2020年12月になって、ざっと目をとおした。ただし、まだ lattice ソフトウェアを実際にうごかしてみていない。
著者は、本書を書いたときはアメリカの大学に所属していたが、いま(2020-12-17)ウェブ検索してみると、インドのデリーにある Indian Statistical Institute にウェブサイトがある。https://www.isid.ac.in/~deepayan/ そこの associate professor として、Rのほか、統計学やプログラミング入門をおしえている。そこにある個人情報は大学(ISIの学士)からの学歴・職歴だけだが、ベンガル語についてのページがある。ベンガル語話者にちがいない。Sarkarをショーカーというのは、ベンガル語の発音が英語にとりこまれた形にちがいない。
William Cleveland の発想にもとづいて、Bell研究所の人たちが、S の上で Trellis というグラフ作図ソフトウェアをつくっていた。lattice は、Sarkar が R の上で (Murrell による grid パッケージを利用して) Trellis と互換の機能を実装したところからはじまったパッケージである(その後の発展はかならずしも互換ではない)。
第1章。lattice の特徴がのべられている。
latticeの特徴的な表現方法は「条件つきマルチパネル」だ。データをグループにわけ、グループごとに同じ仕様の図(たとえばヒストグラム)をつくってならべる。軸の要素の大部分は共通だから、別々の図をならべるばあいよりは画面を節約した配置ができる。
ソフトウェアとしての実装の特徴。latticeパッケージの「高水準関数」はグラフを作図する機能をもつのだが、実際は trellis というクラスのオブジェクトをつくる。そのオブジェクトについて print または plot を実行したときに実際の作図がおこなわれる。(ただしふつうは print が自動的によびだされるようにつくられており、この構造を意識しなくてもよい。) グラフの表現をすこしかえたいとき、オブジェクトを加工してから表示するという手順をとれる。(第2章 2.5.3 に update という関数によって加工する例がでてくる。update は第11章 11.3 で説明される。)
第2章。lattice で図をつくるときの基本的なこと。とくに、条件わけが2次元になっていたらどうするか。画面上にパネルを2次元に配置するのが基本だ。ただし、それぞれのパネルの中の図の縦横比が適切かという問題もある。Cleveland によれば (わたしがおぼえているのは Elements of Graphing Data [読書ノート])の1994年版だが、本書の参考文献は1988年の論文)、折れ線が水平から45度の方向にむいているのが見やすい。それも考慮してパネルの配置をくふうしたほうがよい。
第3章。1次元の分布の表現。1次元の散布図のようなもの、密度関数の折れ線グラフ、ヒストグラム、箱ひげ図、「バイオリンプロット」など。また、理論関数あるいは他のデータと組み合わせた Q-Qプロット。
第4章。数量の比較には(棒グラフなどよりも) 線上の dot の位置で値をしめす dot plot がよい (Cleveland の主張。Elementsの1985年版の主要な論点だった)。2次元以上の条件わけのあるとき、グループ内の比較とグループ間の比較が見やすいように dot plot を配置する。
第5章。2変量の散布図。そして、多変量のとき、散布図を総あたりでつくる散布図方陣(scatterplot matrix、本書の表現は「散布図行列」)。なお、そのほかの多次元数量データの表示方法として、「平行座標プロット」がちょっと紹介される。
第6章。3次元の数量を3次元グラフィックスで表示すること。3次元オブジェクトをつくっておいて人の操作で座標軸を回転して観察するというのは、Rのもとでは困難らしい。ここでできるのは、3次元に分布する点の位置を2次元に投影した静止画像だ。自由に回転できないとすると、画面上の長さはデータ値と直接関係がつかないから、Clevelandの基準ではよい可視化方法ではないだろう。ただし、latticeでは、視点をすこしずつ変えた一連の投影図のオブジェクトをつくっておいて比較しながら見ることはできる。これならばよいかもしれない。
ここから第2部。latticeのもつ技術各論。
第7-9章では、lattice のもとでいろいろな指定ができること。
第10章はデータ操作。とくに、カテゴリカル変数である「因子」(factor)や
「シングル」(shingle)を生成してつかうこと。(シングルは数量データの階級わけのようなものだが、となりどうしのかさなりあいをもつ。)
第11章は、trellisオブジェクトを操作すること。第12章は、trellisオブジェクトに対話的操作で要素を追加すること。
ここから第3部。発展的なこと。
第13章。
latticeの関数は、(traditionalな) graphics の関数、たとえば text() とくみあわせてつかうことができない。gridパッケージの関数、たとえば grid.text() とならばくみあわせられるが、text()とは仕様がちがう。そこで、text() とだいたい仕様が共通な panel.text() が用意されている。このほかの graphics の関数についても同様である。
13.5節では、地図への表示が紹介されている。これは maps パッケージによる (Sのもとで Becker が開発したものが R にくわわったのだ。) 口絵のアメリカ合衆国のcounty別ぬりわけを見ると、かなり実用性があるようにおもわれるが、本書だけでは手本としての情報がとぼしい。
第14章。
latticeの拡張として「S3メソッド」と「S4メソッド」というものがあるそうだ。(本書だけでは情報がとぼしいが、外の情報をさがすきっかけにはなる。)
また、あたらしい関数を書くこともできる。【ここで出てくる例が、円グラフ(pie chart)をマルチパネルで配置するものなのだが、Cleveland ならば、円グラフは数量を直観的に知覚する精度が悪いのでよくない、4.2節の例のようにグループごとにドットプロットにするか、帯グラフにせよというだろう。】
折りかえしのあとに 日本語版のくわしい目次をつける。
== 目次 ==
(カラー図版)
まえがき
– – なぜ lattice なのか?
– – 本書から期待できること
– – 本書に期待してはいけないこと
– – 本書をどう読むか
– – カラー
– – 読み始める前に
– – lattice が生まれるまで
– – 注意事項と代わりになるシステム
– – 献辞
目次
第1章 導入
– 1.1 条件付きマルチパネル
– – 1.1.1 グループ別ヒストグラム
– – 1.1.2 トレリス・システムの呼び出し
– – 1.1.3 カーネル密度プロット
– 1.2 重ね合わせ
– 1.3 “trelis” オブジェクト
– – 1.3.1 トレリスの作図の抑制
– – 1.3.2 トレリスのマルチパネルの配置
– 1.4 後続する章の内容について
第1部 基礎
第2章 lattice の技術的概要
– 2.1 基本的な使い方
– – 2.1.1 トレリス・モデル
– – 2.1.2 data 引数
– – 2.1.3 条件付け
– – 2.1.4 シングル
– 2.2 次元とその物理的レイアウト
– – 2.2.1 アスペクト比
– – 2.2.2 レイアウト
– – 2.2.3 レイアウトの微調整: between 引数と skip 引数
– 2.3 グループ化された画像
– 2.4 グラフの注釈: キャプション, ラベル, 凡例
– – 2.4.1 凡例の補足
– 2.5 データの図式化
– – 2.5.1 尺度と軸
– – 2.5.2 パネル関数
– – 2.5.3 パネル関数の解明
– 2.6 返り値
第3章 単変量分布の視覚化
– 3.1 密度プロット
– 3.2 大規模なデータ
– 3.3 ヒストグラム
– 3.4 正規 Q-Q プロット
– – 3.4.1 正規性とボックス・コックス変換
– – 3.4.2 このほかの 理論 Q-Q プロット
– 3.5 経験累積分布関数
– 3.6 2標本 Q-Q プロット
– 3.7 箱ひげ図
– – 3.7.1 バイオリン・プロット
– 3.8 ストリップ・プロット
– 3.9 型強制ルール
– 3.10 離散分布
– 3.11 モデル式によるインターフェイスについての注
第4章 マルチウェイ表の表示
– 4.1 Cleveland のドット・プロット
– 4.2 バー・プロット
– – 4.2.1 順序の調整
– – 4.2.2 バー・プロットと離散分布
– 4.3 カテゴリカル・データの視覚化
第5章 散布図とその拡張
– 5.1 標準的な散布図
– 5.2 subscripts 引数による高度な添字指定
– 5.3 type 引数による変更
– – 5.3.1 重ね合わせと type 引数
– 5.4 大規模データ向け散布図
– 5.5 散布図行列
– – 5.5.1 対話的な散布図行列の作成
– 5.6 平行座標プロット
第6章 3変量画像
– 6.1 3次元散布図
– – 6.1.1 動的操作とステレオ表示
– – 6.1.2 バリエーションとパネル関数
– 6.2 平面と2次元の表
– – 6.2.1 データの準備
– – 6.2.2 平面の視覚化
– – 6.2.3 離散配列データの視覚化
– 6.3 理論平面
– – 6.3.1 パラメータ化平面
– 6.4 擬似カラー・プロットのパレット選択
第2部 柔軟な調整
第7章 グラフィックス・パラメータとそのほかの設定
– 7.1 パラメータのシステム
– – 7.1.1 テーマ
– – 7.1.2 デバイス
– – 7.1.3 グラフィックス・デバイスの初期化
– – 7.1.4 テーマの読み込みと修正
– – 7.1.5 記述の方法とそのバリエーション
– – 7.1.6 par.settings 引数
– 7.2 利用可能なグラフィックス・パラメータ
– – 7.2.1 非標準設定変数
– 7.3 非グラフィックス・オプション
– – 7.3.1 デフォルト引数
– 7.4 カスタマイズ結果の固定
第8章 プロットの座標と軸の注釈
– 8.1 パケットとプリパネル関数
– 8.2 scales 引数
– – 8.2.1 関連性
– – 8.2.2 軸の注釈: 目盛とラベル
– – 8.2.3 デフォルトの設定
– – 8.2.4 3次元画像: cloud() 関数と wireframe() 関数
– 8.3 範囲とアスペクト比
– – 8.3.1 プリパネル関数の補足
– – 8.3.2 範囲の明示的な指定
– – 8.3.3 バンキングによるアスペクト比の選択
– 8.4 scales の要素と軸関数
– – 8.4.1 要素
– – 8.4.2 軸
第9章 ラベルと凡例
– 9.1 ラベル
– 9.2 凡例
– – 9.2.1 grid グラフィックス・オブジェクトとしての凡例
– – 9.2.2 colorkey 引数
– – 9.2.3 key 引数
– – 9.2.4 設定の問題と auto.key 引数
– – 9.2.5 groups 引数から不要な水準を省く
– – 9.2.6 さらに複雑な応用例
– – 9.2.7 高度な調整: legend 引数
– 9.3 ページ注釈
第10章 データ操作と関連事項
– 10.1 非標準的評価
– 10.2 モデル式によるインターフェイスの拡張
– 10.3 make.groups() 関数によるデータの結合
– 10.4 部分集合の作成
– – 10.4.1 因子水準の整理
– 10.5 シングルとその操作ツール
– – 10.5.1 因子やシングルへの強制変換
– – 10.5.2 軸ブレイクへのシングルの利用
– – 10.5.3 カット・アンド・スタック・プロット
– 10.6 カテゴリカル変数の水準の順序
– 10.7 ストリップのデザイン調整
– 10.8 掲載グラフの改良
第11章 “trellis” オブジェクトの操作
– 11.1 “trellis” オブジェクトのメソッド
– 11.2 plot(), print(), summary() メソッド
– 11.3 update() メソッドと trellis.last.object() 関数
– 11.4 Tukeyの平均値-差プロット
– 11.5 特殊な操作
– 11.6 画像の操作
第12章 トレリス画像への対話的操作
– 12.1 伝統的なグラフィックス・モデル
– – 12.1.1 対話的操作
– 12.2 ビューポートと trellis.vpname() 関数, trellis.focus() 関数
– 12.3 対話的な追加
– 12.4 そのほかの利用方法
第3部 トレリス画像の拡張
第13章 高度なパネル関数
– 13.1 予備知識
– – 13.1.1 パネル関数のためのブロック組み立て
– – 13.1.2 アクセサ関数
– – 13.1.3 引数
– 13.2 たわいもない実験例: 内トロコイドと内サイクロイド
– 13.3 そのほかの事例
– – 13.3.1 密度推定の別の方法
– – 13.3.2 箱ひげ図の改良
– – 13.3.3 レベル・プロットをカスタマイズしたコレログラム
– 13.4 3次元投影
– 13.5 地図
– – 13.5.1 単純な投影法
– – 13.5.2 条件付き地図
第14章 新しいトレリス画像
– 14.1 S3 メソッド
– 14.2 S4 メソッド
– 14.3 新しい関数
– – 14.3.1 完備された事例: マルチパネル・パイ・チャート
参考文献
訳者あとがき
索引