Rでプロットする場合、ggplot2またはggvisを学習する必要がありますか?


38

Rでプロットする場合、ggplot2またはggvisを学習する必要がありますか?どちらかが優れているのであれば、必ずしも両方を学びたいとは思わない。Rコミュニティが機能が重複する新しいパッケージを作成し続けるのはなぜですか?紹介ブログ記事は ggvisは、洗練されたプロットパッケージggplot2がすでに存在していることを考えると作成された理由の単語を言及していません。


5
ggvisはまったく異なるケトルです。本当の選択肢はggplotとlatticeの間です。
ガラ14

1
答えはあなたが何を求めているかによると思います。静的な高度なプロットを探しているなら、学びたいと思うでしょうggplot2。Webの視覚化については、を検討してくださいggvis
ローマンルシュトリック14年

回答:


39

ggplot2から始めます。静的プロットを作成します。

静的なプロットとは別に、ggvisはインタラクティブなプロットの作成にも使用できます。ggplot2の構文を学習すると、インタラクティブ機能を追加してggivsプロットを作成するための構文が自然に続きます。


4
これは不正確です(執筆時点で正確だったかもしれません)。ggvisは間違いなく静的プロットの作成に使用できます。インタラクティブなプロットも可能という事実は、制限ではなく機能です。静的プロットの簡単な例:library('ggvis'); mtcars %>% ggvis(~wt, ~mpg) %>% layer_points(fill = ~factor(cyl))
アンドレテラ

47

ダイアンクックの答えを少し広げたいと思います。彼女が言ったように、ggplot2は静的なプロットを作成するためのものであり、ggvisはインタラクティブなプロットのためのものです。それには多くの意味があります。

ファイルタイプ ggvisの出力は、CSSおよびjavascriptファイルを含むHTMLです。ggvisは通常の画像ファイルを自然に出力しません。ggplot2は通常の画像を出力します。この画像は、HTML、pdf、gif、または電子メールなどに埋め込むことができます。ggvis、ファイルを電子メールで送信する場合は、ブラウザーで表示するHTMLファイルのディレクトリを圧縮します。

アニメーション その結果、アニメーションを作成する場合、ggplot2でフレームを作成してマージできますが、ggvisでこれを行う自然な方法はありません。インタラクティブに動作するggvisは「ライブ」をアニメーション化しますが、これらは異なる種類のアニメーションです。ggvisが処理できる以上の処理がフレームごとに行われている場合、画像を生成し、ムービーをバックグラウンドで作成することで(少なくとも自然な方法で)それを回避することはできません。同様に、ユーザーは映画やgifファイルをggvisからダウンロードしてリプレイすることはできません。

現在の私のプロジェクトでは、ggplot2がインタラクティブにアニメーションするには遅すぎるため、ggplot2からggvisに切り替えました。しかし、私はユーザーが設定をいじった後、「実行」をクリックして、彼らがしたことのフルスピードでスムーズなアニメーションの映画をダウンロードできるようにもしたいと思います。私はggvisを使用してこれを行う方法を理解していませんが、ggplot2を使用するケーキです。

速度 ggvisは、特にデータを変更する場合、ggplot2よりもはるかに高速です。各ggplot2プロットには、2〜3の遅延があります。ggvisには、最初にプロットを作成するときに、データの変更がシームレスに行われます。ggvisはデータに「反応」してリンクできるため、データが変更されるたびに更新されます。ggplot2では、プロット全体が再描画されます。

スタイルと外観 ggplot2プロットは、一見するとggvisプロットよりも少し良く見えます。ggplot2プロットは非常にエレガントです。ggvisプロットは単純ですが、私には成長しています。xkcdやwesandersonパッケージなどのggplot2の拡張機能もありますが、ggvisに類似するものはありません。ggplot2のプロットは、すべて同じ人(ggplot2の作成者)によって作成されたように見え、しばらくすると疲れます。

完全性 ggplot2で作成できるプロットタイプは、少なくとも今のところggvisではサポートされていません。たとえば、ggvisには「ラグ」プロット要素はありません。ggvisで作成された1つまたは2つのコロプレスを見てきましたが、自然な組み込みのサポートはまだありません。ggplot2には極座標(円グラフ)がありますが、ggvisにはありません。ggvisからも欠落しています(ggplot2またはggplot2拡張で利用可能):boxplots; 等高線図; 自然なヒートマップ; 自然相関チャート; ドットプロット; バイオリンのプロット; ネットワークプロット; 樹状図。もちろん、非常に賢い人々がこれらすべてをggvisで作成できると確信していますが、私はそれほど賢くはありません。

アノテーション ggplot2には、非常に優れた、おそらく十分に活用されていないアノテーションフレームワークがあります。ggvisはしません。

サブプロットとファセット ggplot2には、非常に素晴らしいが、おそらく限定的な「ファセット」機能があります。gridパッケージを使用して、複数のggplot2プロットを結合することもできます。今のところ、ggvisでもできません。ggvisプロットは、単一の画像に結合することはできません(画像ではないため、「ライブ」Webページであるため)、ファセットやサブプロットの種類をサポートしていません。これはパイプラインにあるはずです。

視覚的な柔軟性 ggplot2は、すべてのプロットが同じように見えることを望んでいます。つまり、著者がスタイルを好むようになっています。たとえば、ggplot2に複数のy軸を持つプロットを作成する方法はありません。ggvisはできます。ggvisはggplot2よりもはるかに柔軟です。凡例を非表示にする、複数の凡例を1つにまとめる、同じプロット上の異なるものに異なるスケールを使用するなどの操作がはるかに簡単になります。

深いカスタマイズ可能性たとえば、新しい巧妙なスケールを作成したい場合、ggplot2でそれを行うのはそれほど難しくありませ(かなり混乱しますが)。ggvisでその多くを行う方法はないようです。たぶん、まだまだです。

時系列 ggplot2は時系列のプロットを好みません。それはできますが、それはしませんしたいです。実際、どちらも望んでいません。どちらもdata.frameでデータをフィードすることを要求し、xtsまたはzooオブジェクトを処理できません。時系列をスライスするための組み込み機能もありません。しかし、ggvisはggplot2ほど時系列に反撃しません。これは、ggvisプロットのデータを非常に高速に更新することが原因の1つと考えられます。時系列をプロットしたい場合は、提出にどちらかを打ち負かす必要がありますが、ggvisはそれについて受動的で積極的ではありません。

それらは同じ構文ですか? 並べ替え...それらの間には多くの共通点があり、一方のスタイルで考えることを学ぶことは、他方のスタイルに適応するのに役立ちます。特に、両方とも、すべてのプロット呼び出しがすべて1行のコードで互いにパイプされるように設計されています。これの主な利点は、デバッグとプロファイリングを本当に難しくし、基本的にRstudioのようなもののデバッグ/プロファイリング機能を役に立たなくすることです。それ以外は、構文的にまったく異なります。ggplot2で難しいことは、ggvisでは簡単です。ggplot2で簡単なことは、ggvisでは不可能です。およびその逆。(私はggvisが物事を行う方法を少し好みますが、理解しやすいと思います。)

バグ ggvisにはまだかなりの数があります。時々奇妙に振る舞います。ただし、回避策に数時間かかり、ほとんど意味をなさない理由で、プロットがランダムに消えることがあります。開発者はこれを自由に認めています。ggvisはまだ本番環境に対応していません。あなたが任意の複雑さに対処する場合は、ます、彼らは冗談ではありません発見します。

結論: それぞれの中間プロットを学習するには、約16時間かかります。したがって、現実的には、おそらく両方を学習することになります。


1
素晴らしい比較
スカン

より速いggvis、lattice、またはrglとは何ですか?(大規模なデータセットの場合)
skan

+1素晴らしい書き込み。これまでの両方の経験に基づいて、ここのすべてに同意します。
デビッドクルーク

こんにちは、ggvis vs rchartsはどうですか?
スカン

タイムシリーズ:ggplot2は、拡張ggfortifyで決定的に勝利します。これに関する優れたドキュメントrpubs.com/sinhrks/basicsを参照してください。
アルキメデ

10

後に表示されるメッセージlibrary(ggvis)は自明だと思います。

ggvis APIは現在急速に進化しています。本番環境ではこれに依存しないことを強くお勧めしますが、自由に探索してください。明らかなバグが発生した場合は、https://github.com/rstudio/ggvis/issuesに最小限の再現可能な例を提出してください。質問やその他の議論については、https://groups.google.com/group/ggvisを使用してください

ggplot2と比較して、ggvisにはまだいくつかの機能と洗練が欠けています(たとえば、グラフにタイトルを追加する方法、目盛りラベルと重なる軸タイトル、さらには、ファセットがサポートされていない、など)。少しすっきりしていて、双方向性は本当に素晴らしいです。

私自身の経験から、光沢のあるアプリを構築する場合、ggvisは必須です。次に、WebとRに優しいグラフプロットエンジンを使用することの利点は、現在の欠点を大きく上回ります。

データ探索のために静的なグラフを作成したい場合、ggplot2は多くのクールな機能を備えた成熟したライブラリであり、健全なユーザーコミュニティと多くの学習リソースを備えています。

両方のパッケージの背後にある哲学は類似しているため、スキルをあるパッケージから別のパッケージに簡単に移すことができます。


8

Rコミュニティは、さまざまな理由で新しい(そしてしばしば重複する)パッケージを出し続けています。

1)誰かが何かを変更したり、既存のパッケージでは利用できないものを追加したいが、その多くが重複している(したがって、回帰を行う多くのパッケージ)

2)誰かがパッケージを課題として書く

3)パッケージを書くのは楽しいです(そのようなことが好きなら)

4)元のパッケージが存在することを知らない


9
特定の例とあなたのポイント4に関して:ggvisはggplot2と同じ人によって作成されています。ここで重要な点は、ggplot2の使用が広まっているため、既存のコード/依存パッケージの多くを壊さずに変更を実装することが不可能になったことです。
ローランド14

1
この種の既存のパッケージの再発明は、資本主義社会の経済不況のように起こることを意図していますか?
qazwsx 14

2
@Peter:Rの部外者として、これは公正なコメントのように思えますが、(ほとんどの場合)あなたは質問に答えません!
ニックコックス14年

@NickCox質問にある質問の1つに答えました。:-)。
ピーターフロム-モニカの復職

1
@Peter非常に公正な点。stats.stackexchange.com/questions/58966/…への相互参照は、したがって適切だと思います。
ニックコックス14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.