ほとんど使用されていないデータの視覚化[終了]


178

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

答えは:

  1. 実際にはあまり使用されません。
  2. バックグラウンドでの多くの議論なしに理解できる。
  3. 多くの一般的な状況に適用できます。
  4. 例を作成するために再現可能なコードを含めます(できればRで)。リンクされた画像がいいでしょう。

13
これは非常に有益な議論だと思いますが、残念ながら閉ざされています。
Alex Brown、

2
@AlexBrown:投票して再開するのはなぜですか?この質問の文言が「建設的ではない」と感じる理由がわかりますが、この質問の結果、このトピックに関する最も思慮深く洞察に満ちた回答がWebのどこにでもありました。これらの回答が更新され、拡張されることを望んでいます。
最大

2
これはおそらくstats.stackoverflow.comに移動する必要があります。それはそのサイトにはるかに適しています。
naught101 2012年

4
残念ながら、QQプロットはこれがクローズされる前に誰も言及していませんでした。それらはとても便利です!
naught101 2012

これを再度開く必要があります。
Peter Flom

回答:


89

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

最初に、今年初めの "Looking at Data"のggplot2とggobiに関する非常に優れたチュートリアルを紹介します。さらに、Rからの1つの視覚化と2つのグラフィックパッケージ(ベースグラフィック、ラティス、またはggplotほど広くは使用されていません)を強調表示します。

ヒートマップ

多変量データ、特に時系列データを処理できる視覚化が本当に好きです。 これにはヒートマップが役立ちます。本当にきちんとした1つは、革命のブログでデビッド・スミスによって紹介されました。これは、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)

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

代替テキスト

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

学習する価値のあるもう1つのパッケージはRGLです。これは、インタラクティブな3Dグラフィックスを作成する機能を簡単に提供します。これについては、オンラインで多くの例があります(rglのドキュメントを含む)。

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

GGobi

知っておく価値のあるもう1つのパッケージはrggobiです。このテーマに関するSpringerの本と、「Looking at Data」コースを含む多くの優れたドキュメント/例がオンラインにあります。


いいね。コード/画像を含めていただきありがとうございます。
Ian Fellows

「Z」の垂直位置、または黒い実線の垂直線の曲がりによって何が示されますか?
10

これらは月の境界です(月は同じ日に終了しません)。
シェーン

3
美しいです。どのようにして月の境界を実現しましたか?
Alex Brown


58

私は本当にドットプロットが好きで、適切なデータ問題のために他の人にそれらを勧めると、いつも驚かれ、喜んでいます。それらはあまり使われていないようで、私にはその理由がわかりません。

以下は、Quick-Rの例です。 車のデータのドットプロット

私はクリーブランドがこれらの開発と普及に最も責任があると思います、そして彼の本の例(欠陥のあるデータがドットプロットで簡単に検出された)はそれらの使用に対する強力な議論です。上記の例では、1行に1つのドットしか配置していませんが、実際の力は各行に複数のドットがあり、どちらがどれかを説明する凡例が付いていることに注意してください。たとえば、3つの異なる時点に異なる記号や色を使用すると、さまざまなカテゴリの時間パターンを簡単に把握できます。

次の例(Excelですべてのことを行います)では、ラベルの入れ替えの影響を受けた可能性のあるカテゴリを明確に確認できます。

2グループのDotplot


1
dotplotは、軸が切り替えられた散布図とどのように異なりますか?
DrSAR

4
@DrSARヒストグラムは棒グラフとは異なりますか、または密度プロットは線グラフと異なりますか?多くの標準的なチャートタイプを、より基本的なジオメトリの観点から説明できます(BertinのSemiologie Graphiqueを参照)。しかし、それは、何かを特定の方法でプロットする洞察を、それほどユニークではありません。この場合、1つの連続データに対して2つのカテゴリ情報(1つは垂直、もう1つはプロット文字の形状による)をプロットしています。ほとんどのソフトウェアパッケージでは、散布図をハッキングして作成しますが、散布図ではないことを強調します。
Ari B. Friedman、

2
@ gsk3いびきを鳴らすつもりはなかった。実際、私は(グラフィックスの文法と同様の作品についてさらに読んだ後)この高レベルの区別がプレゼンテーションにとって非常に重要である可能性があることに気づきました。これを見せてくれてありがとう。
DrSAR

@DrSARそして私は防御的に聞こえることを意味していませんでした。SOの性質コメント;-)
アリB.フリードマン

56

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

それは、データが線形ではなく本質的に極性である場合があるためだと思います-たとえば、周期的(24時間の1日の時間を複数の日で表すx座標)であるか、データが以前に極性フィーチャ空間にマッピングされていたためです。

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

サイトトラフィックを示す極座標チャート、1時間目と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)

4
あなたのコードをコピーすると、私は非常に異なるプロットを取得します(それはかなり醜いです)。なぜか?この警告が表示されます:1:in.circular(xx [、1]):オブジェクトは次のコンポーネントのデフォルト値を使用してクラス 'circular'に強制変換されます:タイプ: 'angles'単位: 'radians'テンプレート: ' none 'modulo:' asis 'zero:0 rotation:' counter 'rose.diagdata24Daily Site Traffic by Hourthree_palettes
datayoda

私は同じ問題を抱えています。
クレヨラ、

あなたもラインプロットでこれを行うことができます。少し読みにくいかもしれませんが、より詳細なデータや、1サイクル以上かかるデータ(たとえば、10サイクルをプロットしてから、それらの平均をプロットする)の場合にも、非常に素晴らしいものになる可能性があります。
naught101

1
プロットの複製にも問題がありました。最終的には、ggplot2を使用する方が簡単だと判断しました。コードと結果を含む短いデモをRpubsに残しました:rpubs.com/mattbagg/circular
MattBagg

1
同等のggplot2:qplot(y=data, x=1:length(data), fill=factor(1:length(data)), stat='identity', geom='bar') + coord_polar()
naught101

54

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

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インストールの一部です。

通常または平滑化散布図としてのスマイリー


6
完全を期すために、gem pointと組み合わせて透明度(alpha)を使用することにより、ggplotでこの効果を得ることができます。
ポールHiemstra

1
これはカーネル密度推定と同じですか、それとも似ていますか?

30

スパークラインおよびその他のTufteのアイデアに関して、CRANYaleToolkitパッケージは関数sparklineとを提供しますsparklines

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


4
スパークラインに+1。私は現在、Rでのスパークラインの作成に焦点を当てたパッケージに取り組んでいます。Sweaveレポートのテーブルに優れた追加を行います。
シャーピー、2010年

1
涼しい!JayがYaleToolkitに持っているものにあまり満足していません。テーブルにスパークラインが欲しいです。
Dirk Eddelbuettel、2010年


1
Hmisc::latex()からの出力のバージョンにHmisc::describeは、テーブルに含まれるミニヒストグラムが含まれます。
IRTFM 2013年

28

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

次に例を示します(ウィキペディアのリンクにも例が表示されています)。

ここに画像の説明を入力してください


3
バイオリンプロットは、格子のパッケージを経由しても利用できます:bwplot(... panel = panel.violin)
デヴィッド・J.

3
バイオリンプロットのggplot2バージョンが間もなく登場します。github.com/wch/ggplot2/wiki/geom_violin
RomanLuštrik

私はバイオリンのプロットが薄くて便利ではないので、代わりにすべてのドットをジッターで表示するのが好きです。
Nakx

25

私がレビューしていたもう1つの素晴らしい時系列視覚化は、「バンプチャート」です「Learning R」ブログのこの投稿で特集されています)。これは、時間の経過に伴う位置の変化を視覚化するのに非常に役立ちます。

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

代替テキスト


私はこの特定のデータのバンプチャートが好きですが、それが役立つより一般的な状況を考えるのに苦労しています。そうは言っても、Learning Rのブログが靴下を揺さぶるということに私たちは皆同意できると思います。
Ian Fellows

7
バンプチャートは、ランク付けされたデータの平行座標プロットです。
ハドリー、2010年

1
これは、時間の経過に伴うランキングの変化やランキング間の関係を表すのに適したスロープグラフを思い出させます。 slopegraphs
topchef

21

Tufteによるボックスプロットの変更も気に入っています。これは、横方向に非常に「薄く」なり、冗長なインクでプロットが乱雑にならないため、小さな多重比較をはるかに簡単に行えるようにします。ただし、かなり多数のカテゴリで最適に機能します。プロットの数が少ない場合、通常の(テューキー)箱ひげは少し重めなので、見栄えがよくなります。

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
  )

比較プロット

これらの他の方法(他の種類のTufteボックスプロットを含む)については、この質問で説明します。


@daroczigありがとう。最近の1日は、グループ化のさまざまな構成を使用するように書き換えます。その関数を書いて以来、多くのことを学びました!
アリB.フリードマン

1
私はあなたのプロットがとんでもなく読みにくいtufteのものよりずっと好きです。私は今でもTukeyスタイルの箱ひげ図の方が良いと思いますが、適切な妥協案はここにあるようなものかもしれませんが、1pxのオフセットではなく、3pxの幅の線で囲みます。そして、中央値の1px幅の水平線はおそらくよりきれいで、より正確だと思います。
naught101 2012年

19

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

  require(fmsb)
  gstem(beaver1$temp)

ここに画像の説明を入力してください



15

Tufteの優れた業績に加えて、William S. Cleveland著の書籍:Visualizing DataおよびThe Elements of Graphing Dataをおすすめします。それらは優れているだけでなく、すべてRで行われており、コードは公開されていると思います。


14

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

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

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


2
Beanplotも同様にここで挙げることができjstatsoft.org/v28/c01/papercran.r-project.org/web/packages/beanplot/index.html
ラデク

ボックスプロットは十分に活用されていませんか?確かに、多くの論文では、箱ひげ図を作成する必要があるデータに棒グラフが使用されていますが、それらはまだかなり一般的です。
naught101 2012年

11

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


3
モザイクプロットのより良い実装は、vcdライブラリ(関数名 'mosaic')にあります。はるかに柔軟なメソッドシグネチャがあり、グリッドに実装されています(「ベース」グラフィックシステムではありません)。
10

10

Edward Tufteの作品、特にこの本をチェックしてください。

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

ちなみに、彼のスパークラインデータの視覚化手法が好きです。驚き!グーグルはすでにそれを書いてグーグルコードに載せている


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.