概要
Maintainer: | Sherry Zhang, Dianne Cook, Ian Lyttle |
Contact: | huizezhangsh at gmail.com |
Version: | 2024-09-25 |
URL: | https://CRAN.R-project.org/view=DynamicVisualizations |
Source: | https://github.com/cran-task-views/DynamicVisualizations/ |
Contributions: | このタスクビューに対する提案や改良は、GitHubのissueやpull request、またはメンテナのアドレスに電子メールで送ってください。詳しくは Contributing guideをご覧ください。 |
Installation: | このタスクビューのパッケージは、ctvパッケージを使用して自動的にインストールすることができます。例えば、ctv::install.views(“DynamicVisualizations”, coreOnly = TRUE) はコアパッケージを全てインストールし、ctv::update.views(“DynamicVisualizations”)はまだインストールしていない最新状態のパッケージを全てインストールする。詳しくは、CRAN Task View Initiativeを参照してください。 |
ダイナミックなビジュアライゼーションには、ユーザーがマウスやカーソルの選択など、プロットを柔軟に操作できるインタラクティブなグラフィックが含まれます。これは、マウスオーバーを使用してプロット内のポイントまたはラインに関する追加情報を提供するなど、追加の詳細をクエリする場合に便利です。探索的データ分析では、強調表示またはブラッシングを使用して複数のプロットを表示およびリンクすると便利です。ほとんどの対話性は、RをJavaScript (JS)などの外部ライブラリとインターフェースすることで提供されます。ダイナミック・ビジュアライゼーションには、プロット・ウィンドウで連続するフレームをレンダリングすることによって生成されるアニメーションも含まれます。
このCRANタスクビューには、アニメーションや対話型プロットを作成するための動的グラフィックスパッケージの一覧が保持されます。静的プロットは、グラフィックデバイスと同様に、このCRANタスクビューの範囲内にありません。インタラクティブなプロットやアニメーションを生成するための関数が1つまたは2つしか含まれていないが、主にモデリング方法やアプリケーションに焦点を当てたパッケージは、通常含まれていません。このリストにパッケージが見つからないと思われる場合は、問題を投稿するか、GitHub repositoryのプルリクエストを使用して直接追加できます。あるいは、電子メールでメンテナに連絡することもできます。
リストされているパッケージは、汎用パッケージと特定のアプリケーション用に設計されたパッケージ(多変量パッケージ、テンポラル パッケージ、マップパッケージ、ネットワークパッケージ、および特定のプロット タイプ用のその他のパッケージ)にグループ化されています。
汎用
crosstalkは、インタラクティブなプロット自体を作成するのではなく、htmlwidgetsから作成されたインタラクティブなプロット間でのリンクブラッシングを可能にします。リンクブラッシングは、複数のビジュアライゼーションからのデータを表示して、データ内のクラスタ、外れ値、またはその他の構造を特定するのに役立つ対話型アクションです。crosstalkフレームワークと互換性のあるウィジェットには、plotlyとleafletが含まれます。
r2d3は、生のD3.jsコードをRデータオブジェクトにバインドし、D3コードをRネイティブデータオブジェクトで実行できるようにします。このアプローチでは、JSを使用して対話型の詳細を完全にカスタマイズできますが、JSコードを記述する必要があります。r2d3フレームワーク上に構築されたパッケージ: ddplotは、他のプロットタイプの中でも特に、クリックするとアニメーション化されたヒストグラムと折れ線グラフを作成します。
次のパッケージはすべて、散布図、棒グラフ、ヒストグラムなどの基本的なタイプのインタラクティブなグラフィックを作成できます。ほとんどのパッケージは、プロット要素(ドット、バー、線など)を強調表示し、ホバー時にツールチップを表示するサポートを提供します。このレビューでは、プロットの構文と、サポートされている対話型アクションとプロット タイプについて説明します。
- plotly(plotly.js)は、ネイティブのplotly構文からグラフィックスを作成します: plot_ly()で初期化し、add_*()で形状(マーカー、線など)を指定し、layout()で軸と凡例を制御し、colorbar()で色を付けます。変数は、前もって~で指定されます。すべてのplotlyプロットには、パンとズーム、ボックス/なげなわ選択、保存、および複数のデータプロット間でのブラシリンクをサポートするツールバーが含まれています。また、カテゴリの凡例をクリックしてカテゴリを表示/非表示にすることもできます。plotlyパッケージは、ggplotly()関数を使用してggplot2オブジェクトを直接対話型プロットに変換することもサポートしています。plotlyによるアニメーションは、アニメーションセクションで紹介されています。詳細については、Carson Sievertの著書「Interactive web-based data visualization with R, plotly, and shiny」を参照してください。
- ggiraphは、geomおよびscale、facet、guide、theme関数/要素のインタラクティブなバージョンを提供することにより、インタラクティブなグラフィックス用のggplot2の拡張です。インタラクティビティにより、JSコードを使用したカスタマイズされたツールチップや、ホバー効果やクリック効果が可能になります。
- echarts4r(echarts.js)では、プロットはe_charts()によって初期化され、さまざまなプロット要素(形状、軸、テーマなど)がe_*関数(e_line()、e_axis_labels()、e_theme()など)で構築されます。ほとんどの基本的なチャートタイプ、統計グラフィック(信頼帯、相関行列など)、地理空間マップ、一部のタイムライン(時系列)表示、およびネットワーク図をカバーしています。WebGLレンダリングもサポートされており、プロットでカスタマイズされたアイコン/画像を使用します。パッケージでサポートされている独自の対話型アクションは、色/塗りつぶしの凡例の端をドラッグして、プロット上の範囲内のデータをフィルタリングすることです(e_visual_map()を参照)。
- highcharter(highcharts.js)では、プロットはhchart()で初期化されるか、hc_add_series()で構築されます。プロット要素(凡例、色、軸など)は、hc_*()関数を使用して調整されます。このパッケージは、マップおよびネットワーク図、統計プロット(princomp()の後のPCAプロット、相関行列など)の視覚化をサポートします。時間プロットの場合、複数のシリーズ間でのリンクされた追跡と、サブチャート上のボタンのクリックまたはドラッグによるさまざまなスケールでのズームをサポートします。また、クリックすると、さまざまな階層レベルでツリーマップを表示できます。
- billboarder(billboard.js)では、プロットはbillboarder()によって初期化され、プロット要素(形状、軸、凡例など)はbb_*()関数によって指定されます。時系列プロットのズームは、メインプロット(bb_zoom())またはサブチャート(bb_subchart())を選択することでサポートされます。
- googleVis(Google Charts)は、プロットを指定するための文法(gvisScatterChart()など)ではなく、構文gvis[ChartType]()を使用します。プロット要素の追加制御は、main関数内のオプションのリストとして渡されます。マップ、インタラクティブテーブル、ツリーマップ、ネットワーク図とサンキー図、カレンダープロットの作成をサポートしています。
- rAmChartsとrAmCharts4(amcharts.js) は、構文amChartType()を使用してプロットを指定します。選択ボックスによる複数のデータセットの選択をサポートします(amStockMultiSet()を参照)。
- ggvisは、ggplot2のグラフィックスの文法に従って、汎用の探索的データ分析のための対話型グラフィックスを表現します。パッケージは現在CRANにリストされていますが、GitHubの開発者によって休眠とラベル付けされていることに注意してください。
アニメーション
- gganimateは、アニメーションを記述するためにggplot2のグラフィックスの文法を拡張します。フレーム間の遷移(transition_*())やデータの表示と消失(enter_*()/ exit_*())などを指定する機能を提供します。
- plotlyは、グラフィック要素(マーカー、線など)でフレーム(および IDS)の美的要素を指定することでアニメーションをサポートします。
- animateは、基本R構文を使用したアニメーションの作成をサポートしており、D3.jsによって強化されています。
- animationは、ブートストラップやセントラルリミットテホレム(CLT)などの一般的な統計概念のアニメーションイラストのギャラリーを提供し、教育目的で設計されています。
多変量
高次元データの最も一般的な視覚化の1つは、散布図マトリックスです。
- GGally::ggpairs()で作成し、plotly::ggplotly()を使用してインタラクティブに変換して、リンクされたブラッシングを有効にして、さまざまな変数の組み合わせでデータを表示することができます。
- pairsD3は、D3.js を介して散布図行列を作成します。
多変量関係が2つ以上の変数に起因する場合、散布図行列は不十分になり、ツアーと呼ばれる一連の手法が高次元データで構造を探索するのに役立ちます。ツアー手法は、高次元データの線形投影のシーケンスをアニメーション化し、(1)ツアータイプ:投影シーケンスの生成方法と、(2)ディスプレイ(低D投影の表示方法)の2つのコンポーネントがあります。プロジェクションシーケンスを選択するためのさまざまなツアーが利用可能です(グランドツアー:ランダム選択、ガイド付きツアー:プロジェクション追求に基づくなど)。最も一般的な表示は、1D投影法のヒストグラムと2D投影法の散布図です。チャーノフの顔など、他の高Dディスプレイも利用できます。
- tourrは、さまざまなtourrタイプ(grand_tour、guided_tour、planned_tour、local_tourなど)とディスプレイ(animate_xy: 2D、animate_dist:1Dなど)を実装して、フレームごとのアニメーションを作成します。
- spinifexは、マニュアルtourrアルゴリズム(manual_tour)を実装しています。
- liminalは、vegawidgetを通じてtSNEなどの埋め込みアルゴリズムを理解するために、リンクされた表示ビューを実装します。
- detourrは、2Dおよび3Dの散布図表示をthree.jsで実装し、インタラクティブな操作(回転、パン、選択、色と時間制御によるブラッシング)を改善します。
- langevitourは、Langevinダイナミクスを実装して投影シーケンスを生成し、D3.jsでディスプレイを構築します。
- woylierは、スプラインインデックスなどの回転バリアント投影追跡インデックス(これらのインデックス値は平面内で投影を回転させると変化します)の投影シーケンスを生成するために、Given補間メソッドを実装します。
- ferrnは、プロジェクション追跡ガイド付きツアーの最適化ルーチンに診断プロット(インデックス値の追跡と基底空間の可視化)を提供します。
Rの対話型視覚化の別のクラスは、loonツールキットです。グラフィックシステムはTclで記述され、tcltkパッケージを介してRでアクセスされます。
parallelPlot(D3.js)は、PCP軸上のハイライトポイントと範囲にリンクされたブラッシングを使用して、平行座標プロット(PCP)および散布図マトリックスを作成します。
時間的
- tsibbletalkは、crosstalkフレームワーク内の時系列プロットと他のプロットのリンクされたプロットを生成するために、共有tsibbleオブジェクトを作成します。
- dygraphs(dygraphs.js)は、xtsオブジェクトの対話型時系列プロットを作成し、系列の強調表示、値の追跡、イベントと信頼区間の注釈付け、範囲選択、ローリング ウィンドウ スムージングなどの対話型機能をサポートします。
- timevis(vis.js)は、プロジェクト管理とイベントスケジューリングのためのタイムライン視覚化を作成します。時間軸上でのドラッグとズームをサポートし、リンクされたブラッシングのクロストークと互換性があります。
地図
汎用パッケージ
- plotlyは、plotlyエコシステムに適合する汎用のインタラクティブマップの機能を提供し、リンクされたブラッシングなどの機能をサポートします。シンプルで迅速なベースマップは、plot_mapbox()コンストラクタとplot_geo()コンストラクタを使用して作成できます。より複雑なデータ駆動型マップ(例えば、sfを使用)の場合は、plot_ly()コンストラクタを使用するか、ggplot2オブジェクトでggplotly()を使用します。
- ggiraphは、ggplot2オブジェクトをインタラクティブなグラフに変換することをサポートしています。ツールチップのテキスト、クリック時の効果、ホバーや選択のCSSなど、インタラクティブ性を柔軟にカスタマイズでき、追加情報をビジュアライゼーションに組み込むことができます(クリックすると外部Webサイトにリンクするなど)。
- highcharterは、データフレーム/tibbleから作成されたマップと、geojsonioパッケージのgeo_jsonクラスをサポートします。ツールチップをカスタマイズしたり、凡例をクリックしてカテゴリを表示または非表示にしたりできます。
特殊な地図パッケージ
リーフレットファミリー
leafletは、インタラクティブマップ用の最も人気のあるJSライブラリの1つです。データフレーム、sf、GeoJSON/TopoJSON、terra またはラスターパッケージのラスターイメージなど、さまざまなRオブジェクトのマップの作成をサポートしています。このパッケージは、表示オプションとインタラクティブオプションの柔軟なカスタマイズを可能にします:CSSによるツールチップとラベルの強化、ベースマップスタイルの変更と凡例のクリックによるレイヤーの表示/非表示、URLリンクとFont Awesomeによるマーカーアイコンのカスタマイズ、さまざまなベースマップオプション(Open Street Map、Stamen、Stadia、ESRI、カスタマイズされたマップタイルを含む)、マップ上のポイントをクリックしてからの距離と面積の計算(addMeasure()を使用)、 ズーム用のミニグローバルマップなど、いくつか挙げると。リーフレットマップは、クロストークパッケージを通じて他のインタラクティブビジュアライゼーションとクロストークできます。エコシステムは、プラグインを通じてさらに強化されます。
- leafpopは、ツールチップのポップアップに静的プロットを表示します。
- leafsyncは、同期された複数のリーフレットマップを小さな倍数で表示します。
- leaflet.minichartsは、グリフ(円と棒)をアニメーション付きでマップ上に表示します。
- leaflegendは、カスタマイズした画像をマークとして、また凡例に追加します。
- leafemは、GIS関連のレイヤー(Cloud Optimized Geotiff(COG)、星/ラスター画像など)をサポートしています。
- leafglは、WebGLフレームワークを使用して大規模なデータ(100万ポイントや100kポリゴンなど)をレンダリングします。
その他
- tmapは、テーマ別マップ(静的および対話型の両方)のggplot2スタイルのグラフィック文法を提供し、リーフレットを使用して対話型マップをレンダリングします。
- mapviewは、sf、raster、starsなどのRの一般的な空間クラスから短い構文を使用して、クイックリーフレットとmapdeckマップを作成します。
- mapboxerは、Mapbox GL JSとインターフェースしてインタラクティブなマップを作成します。ベースマップスタイル、美的コントロール、インタラクティブ・フィルタリング (「エクスプレッション」) やポイント・クラスタリングなどのインタラクティブ・コントロールにJSライブラリのリソースを活用します。
- deckglは、インタラクティブマップのdeck.glとインターフェースします。マップを微調整するためのインタラクティブエディタを提供します(add_json_editor())。
- mapdeckは、Mapbox GLおよびdeck.glを介して大規模なデータセットをインタラクティブに視覚化します。データフレーム、sf (sfencoded、sfencodedLite)、geojson/json/GeoJSONなど、より広範なオブジェクトセットをサポートします。
ネットワーク
パッケージは、単純なネットワークをプロットするためのものです。
- sigmajsは、ネットワーク図を構築するための独自の文法があります。igraphとgexfからのデータ構造をサポートし、さまざまなigraphレイアウトを使用してネットワークを表示できます。このパッケージには、sigma.jsのプラグインも実装されており、これには、隣接するノードを強調表示したり、ノードにカスタマイズされた画像を適用したりする機能が含まれています。
- networkD3(D3.js)は、シンプル/フォースネットワーク、サンキーダイアグラム、デンドログラムを生成します。ビジュアライゼーションは、igraphオブジェクトから作成できます。
- visNetwork(vis.js)は、ノードとエッジのデータフレームを通じてネットワーク図を作成します。rpartパッケージからの分類ツリーの結果を視覚化することをサポートします。
- collapsibleTreeは、D3.jsに基づいて階層データ構造を視覚化するための折りたたみ可能なツリー図を作成します。ツリーノードをクリックして子ノードを展開および折りたたむだけでなく、ツールチップやズームもサポートしています。
その他
Rには、特定のインタラクティブな視覚化専用のパッケージも含まれており、多くの場合、関連するJSライブラリとのインターフェースによって行われます。
- trelliscopejs(trelliscope.js)は、小さな倍数の対話的な視覚化を可能にするため、ファセットを通じて1つの画面に表示できない複数の大規模なコレクションを視覚化するのに特に適しています。このパッケージは、facet_wrap()/facet_grid()のドロップイン代替品としてfacet_trelliscope()と、データ変換(計算サマリー、モデルなど)をネストされたデータとリスト列で処理できる整然としたワークフローに適した、より一般的な関数であるtrelliscope()を提供します。
- heatmaply(plotly.js)は、セルホバーツールチップや特定の領域へのズームインなどのアクションを備えたインタラクティブなヒートマップを可能にします。スケーリング、正規化、パーセント化などのデータ変換をサポートしており、観測値の構造を表示するための樹形図は、dendextendパッケージを使用してカスタマイズできます。
- iheatmapr(plotly.js) は、クラスタリング樹形図に加えて、より複雑なサブプロットを持つヒートマップをサポートします。これには、グループカテゴリの注釈と、行と列の要約統計量のカスタマイズ可能なプロットが含まれています。また、複数のヒートマップを並べて表示することもサポートしています。
- tcltkパッケージ(基本パッケージの一部)は、プラットフォームに依存しないTclスクリプト言語とTk GUI要素へのアクセスを提供し、他のパッケージの基礎を形成します。
- rglは、レンダリングバックエンドとしてOpenGLまたはWebGLで構築された3Dビジュアライゼーションを提供します。