web-dev-qa-db-ja.com

最も活用されていないデータの視覚化

ヒストグラムと散布図は、データと変数間の関係を視覚化する優れた方法ですが、最近、どの視覚化手法が欠けているのか疑問に思っています。最も利用されていないタイプのプロットは何だと思いますか?

答えは次のとおりです。

  1. 実際にはあまり使用されません。
  2. 十分な背景説明なしで理解できるようにします。
  3. 多くの一般的な状況に適用できます。
  4. 再現可能なコードを含めて例を作成します(できればRで)。リンクされた画像は素晴らしいでしょう。
176
Ian Fellows

私は他のポスターに本当に同意します: Tufteの本は素晴らしいです そして読む価値があります。

最初に、 ggplot2とggobiに関する非常に素晴らしいチュートリアル を今年の初めに「Looking at Data」から紹介します。それを超えて、Rからの1つの視覚化と2つのグラフィックパッケージ(基本グラフィック、ラティス、またはggplotほど広く使用されていない)を強調するだけです。

ヒートマップ

多変量データ、特に時系列データを処理できる視覚化が本当に好きです。 ヒートマップ はこれに役立ちます。本当にすてきなものが RevolutionsブログのDavid Smith で紹介されました。 Hadleyの好意によるggplotコードを次に示します。

stock <- "MSFT"
start.date <- "2006-01-12"
end.date <- Sys.Date()
quote <- paste("http://ichart.finance.yahoo.com/table.csv?s=",
                stock, "&a=", substr(start.date,6,7),
                "&b=", substr(start.date, 9, 10),
                "&c=", substr(start.date, 1,4), 
                "&d=", substr(end.date,6,7),
                "&e=", substr(end.date, 9, 10),
                "&f=", substr(end.date, 1,4),
                "&g=d&ignore=.csv", sep="")    
stock.data <- read.csv(quote, as.is=TRUE)
stock.data <- transform(stock.data,
  week = as.POSIXlt(Date)$yday %/% 7 + 1,
  wday = as.POSIXlt(Date)$wday,
  year = as.POSIXlt(Date)$year + 1900)

library(ggplot2)
ggplot(stock.data, aes(week, wday, fill = Adj.Close)) + 
  geom_tile(colour = "white") + 
  scale_fill_gradientn(colours = c("#D61818","#FFAE63","#FFFFBD","#B5E384")) + 
  facet_wrap(~ year, ncol = 1)

最終的には次のようになります。

alt text

RGL:インタラクティブ3Dグラフィックス

学ぶために努力する価値のある別のパッケージは [〜#〜] rgl [〜#〜] で、これは簡単にインタラクティブな3Dグラフィックスを作成する機能を提供します。これにはオンラインで多くの例があります(rglのドキュメントを含む)。

R-Wikiには素敵な例があります rglを使用して3D散布図をプロットする方法。

GGobi

知っておく価値のある別のパッケージは rggobi です。 主題に関するSpringerの本 と、 "Looking at Data" コースを含む多くの素晴らしいドキュメント/例がオンラインにあります。

88
Shane

極座標を使用したプロットは確かに十分に使用されていません-正当な理由で言う人もいます。それらの使用を正当化する状況は一般的ではないと思います。また、これらの状況が発生すると、極座標プロットは線形プロットではできないデータのパターンを明らかにできると思います。

なぜならあなたのデータは線形ではなく本質的に極であることがあるからだと思います-例えば、それは周期的ですまたは、データが以前に極地空間にマッピングされていました。

以下に例を示します。このプロットは、Webサイトの平均トラフィック量を1時間ごとに示しています。午後10時と午前1時の2つのスパイクに注目してください。サイトのネットワークエンジニアにとって、これらは重要です。また、それらが互いに近くで発生することも重要です(ちょうど2時間間隔)。ただし、同じデータを従来の座標系にプロットすると、このパターンは完全に隠されます-線形にプロットされ、これらの2つのスパイクは2時間間隔になりますが、これらも2つだけです連続した日で数時間離れています。上記の極座標グラフは、これを簡潔で直感的な方法で示しています(凡例は必要ありません)。

Polar chart showing site traffic, with peaks at hours 1 and 22

Rを使用してこのようなプロットを作成するには、2つの方法があります(Rの上にプロットを作成しました)。 1つは、基本グラフィックシステムまたはグリッドグラフィックシステムで独自の関数をコーディングすることです。他の簡単な方法は、循環パッケージを使用することです。使用する関数は「rose.diag」です。

data = c(35, 78, 34, 25, 21, 17, 22, 19, 25, 18, 25, 21, 16, 20, 26, 
                 19, 24, 18, 23, 25, 24, 25, 71, 27)
three_palettes = c(brewer.pal(12, "Set3"), brewer.pal(8, "Accent"), 
                   brewer.pal(9, "Set1"))
rose.diag(data, bins=24, main="Daily Site Traffic by Hour", col=three_palettes)
56
doug

dotplots が本当に好きで、適切なデータの問題のために他の人に勧めると、彼らは常に驚いて喜んでいます。彼らはあまり利用されていないようで、その理由はわかりません。

Quick-Rの例を次に示します。 dotplot on car data

私は、クリーブランドがこれらの開発と公布に最も責任があると信じており、彼の本の例(不完全なデータがドットプロットで簡単に検出された)は、それらを使用するための強力な議論です。上記の例では、1行に1つのドットのみを配置していますが、実際のパワーは各行に複数のドットがあり、どのドットがどちらであるかを説明しています。たとえば、3つの異なる時点で異なるシンボルまたは色を使用できます。これにより、さまざまなカテゴリの時間パターンを簡単に把握できます。

次の例(すべてExcelで行われています!)では、ラベルスワップの影響を受けた可能性のあるカテゴリを明確に確認できます。

Dotplot with 2 groups

56
Ari B. Friedman

散布図に非常に多くの点があるため、完全に混乱する場合は、平滑化された散布図を試してください。以下に例を示します。

_library(mlbench) ## this package has a smiley function
n <- 1e5 ## number of points
p <- mlbench.smiley(n,sd1 = 0.4, sd2 = 0.4) ## make a smiley :-)
x <- p$x[,1]; y <- p$x[,2]
par(mfrow = c(1,2)) ## plot side by side
plot(x,y) ## left plot, regular scatter plot
smoothScatter(x,y) ## right plot, smoothed scatter plot
_

hexbinパッケージ(@Dirk Eddelbuettelが推奨)も同じ目的で使用されますが、smoothScatter()にはgraphicsパッケージに属しているため、一部であるという利点があります標準Rインストールの。

Smiley as a regular or smoothed scatter plot

54
nullglob

スパークラインおよびその他のTufteのアイデアに関しては、 [〜#〜] cran [〜#〜]YaleToolkit パッケージは、関数sparklineおよびsparklinesを提供します。

より大きなデータセットに役立つ別のパッケージは hexbin です。これは、データをバケットに巧妙に「ビン」化して、単純な散布図には大きすぎるデータセットを処理するためです。

30

バイオリンプロット (ボックスプロットとカーネル密度を組み合わせたもの)は、比較的エキゾチックでかなりクールです。 Rの vioplot パッケージを使用すると、かなり簡単に作成できます。

以下に例を示します(ウィキペディアのリンクにも例を示しています)。

enter image description here

28
Jason Sundram

私がちょうどレビューしていた別の素敵な時系列の視覚化は、 "バンプチャート"「Learning R」ブログのこの投稿 )で紹介されています)です。これは、経時的な位置の変化を視覚化するのに非常に便利です。

http://learnr.wordpress.com/ で作成する方法について読むことができますが、これは最終的に次のようになります。

alt text

25
Shane

Tufteのボックスプロットの修正も気に入っています。小さな倍数比較は、水平方向に非常に「薄く」、余分なインクでプロットが乱雑にならないため、はるかに簡単に実行できます。ただし、かなり多数のカテゴリで最適に機能します。プロットに数個しかない場合、通常の(Tukey)ボックスプロットは少し重くなるので見た目が良くなります。

library(lattice)
library(taRifx)
compareplot(~weight | Diet * Time * Chick, 
  data.frame=cw , 
  main = "Chick Weights",
  box.show.mean=FALSE,
  box.show.whiskers=FALSE,
  box.show.box=FALSE
  )

compareplot

これらを作成する他の方法(他の種類のTufte boxplotを含む)は この質問で説明します です。

20
Ari B. Friedman

キュートで(歴史的に)重要な茎葉図(Tufteも大好きです!)を忘れてはなりません。データ密度と形状の数値的な概要を直接取得できます(データセットが約200ポイントより大きくない場合はもちろん)。 Rでは、関数stemは(ワークスペースで)茎葉のレイアウトを生成します。パッケージ fmsbgstem関数を使用して、グラフィックデバイスに直接描画することを好みます。以下は、葉ごとの表示におけるビーバーの体温の変化です(データはデフォルトのデータセットにある必要があります)。

  require(fmsb)
  gstem(beaver1$temp)

enter image description here

18
Geek On Acid

Horizo​​nグラフ (pdf)、多数の時系列を一度に視覚化するため。

平行座標プロット (pdf)、多変量解析用。

Association および mosaic プロット、分割表( vcd パッケージを参照)

18
Richie Cotton

Tufteの優れた作品に加えて、William S. Clevelandの本Visualizing DataとThe Elements of Graphing Dataをお勧めします。それらは優れているだけでなく、すべてRで実行されており、コードは公開されていると思います。

15
Peter Flom

ボックスプロット! Rヘルプの例:

boxplot(count ~ spray, data = InsectSprays, col = "lightgray")

私の意見では、データをすばやく確認したり、分布を比較したりするのに最も便利な方法です。より複雑なディストリビューションには、vioplotと呼ばれる拡張機能があります。

14
mbq

モザイクプロットは、上記の4つの基準すべてを満たすように思えます。 rには、モザイクプロットの下に例があります。

11
Peter Flom

エドワード・タフテの作品、特に この本 をご覧ください

彼の旅行プレゼンテーション を試すこともできます。それは非常に優れており、彼の4冊の本が含まれています。 (私は彼の出版社の株式を所有していないことを誓います!)

ところで、私は彼のスパークラインデータの視覚化手法が好きです。驚き! Googleはすでにそれを書いて、それを Google Code

10
Paul Sasik

要約プロット?このページで言及したように:

要約統計と不確実性の視覚化

1
Gökhan Sever