マーク、
私の知る限り、これに答えようとします(開示:私はFusionChartsの共同創設者兼CEOです-そこではJavaScriptチャートコンポーネントを作成しています)。
私は答えを2つの部分に分けました:
- Web アプリケーションのグラフ作成コンポーネントを見つけるには?
- これらのライブラリによって作成されたチャートをエンドユーザーが変更するための UI を構築する方法は?
Web アプリケーションにチャート機能を追加するには、3 つの方法があります。
サーバー側チャート ライブラリの使用
1 つ目は、API を介してサーバー上のデータを受け取り、チャートを表す画像を作成して、これらの画像をストリーミングする、プラットフォーム固有のチャート ライブラリを使用することです。このようなコンポーネントの例としては、Telerik (.NET、有料)、Infragistics (.NET、有料)、ComponentArt (.NET、有料)、ChartFX (Java、.NET、有料)、Steema (.NET、有料)、pChart (PHP) があります。 、無料)、jpGraph、およびそれらのすべての束。
このようなコンポーネントを使用する利点は次のとおりです。
- 成熟したライブラリは多種多様なグラフの種類を提供します
- グラフは画像として生成されるため、モバイル デバイスを含むあらゆる場所で機能します。
- 画像としてレンダリングされたグラフのおかげで、ルック アンド フィールは常に同じままです。
- アプリケーション全体でユーザーごとに 1 つまたは 2 つのチャートのみが提供される場合、サイズが 50 ~ 500KB のクライアント側ライブラリと比較して、使用される帯域幅は少なくなりますが、その後はキャッシュされます。
欠点は次のとおりです。
- グラフを画像として生成する場合、サーバー側でかなりのリソースが使用されます。多くの同時ユーザーがいるアプリケーションの場合はなおさらです
- 画像でできることは限られているため、グラフによって提供されるインタラクティブ性とアニメーションは非常に限られています。
- それらはテクノロジー固有のものです。したがって、ASP.NET 用のライブラリを使用している場合、Java に移行する場合は、別のライブラリに切り替える必要があるため、ルック、フィール、および機能セットが異なります。
ホステッド チャート API の使用
2 番目のオプションは、クエリ文字列/REST API を介してデータを取り込み、チャート画像をアプリケーションに返すホストされたチャート ライブラリを使用することです。例としては、古い Google Charting API があります。
これの利点は次のとおりです。
- チャート ライブラリをホストする必要がないため、すべてのメンテナンスとアップグレードの問題はそれらによって管理されます。
- テクノロジー スタックを変更しても、チャートは同じサービスによって引き続き提供されるため、ルック アンド フィールは同じです。
短所:
- このようなサービスは、さまざまな種類のチャートを提供していません
- 機密データは、HTTP 経由でサーバーの外部からそのようなプロバイダーに転送する必要があります
- クエリ文字列で送信できるデータ量の制限
- 繰り返しますが、チャートは画像であるため、インタラクティブにすることはできません
JavaScript、CSS、Flash、Silverlight、または Java アプレットを使用したクライアント側のチャート作成
最後の 3 番目のオプションは、JavaScript/HTML5、Pure CSS、Flash、Java アプレット、または Microsoft Silverlight で記述されたクライアント側チャート ライブラリを使用することです。iOS デバイスが独自のプラグインをサポートしていないことを考慮すると、Flash、Java、および Silverlight ベースのプラグインは iPad および iPhone では動作しません。したがって、安全に無視できます。純粋な CSS コンポーネントは非常に軽量で、非常に基本的な視覚化に使用できます。
これで、ようやく JavaScript/HTML5 ベースのチャート コンポーネントにたどり着きました。無料と有料の JavaScript チャート作成ライブラリがたくさんあります。それらのいくつかを以下にリストしました。
有料: FusionCharts Suite XT (JavaScript)、HighCharts、amcharts、AnyChart、Jqplot、ZingCharts、Wijmo、TeeChart、Sencha Touch Charts、RGpraph、Kendo UI DataViz、JSCharts、Arcadia Charts、jQChart、EJSChart、emprisejs、techoctave
無料: FusionCharts Free (Flash)、Google Chart Tools、Yahoo UI コンポーネント、Flot、Milkchart、Moochart、protovis、graphael、elycharts、smootiecharts、dhtmlxchart、grafico、canvasjs、dygraphs、thejit、awesomechartjs、jchartFX。データ視覚化のための d3.js ベースの無料コンポーネント: xcharts、nvd3、rickshaw、cubism.js、Dc.js、xkcd、graphene
利用可能なコンポーネントの数を考えると、チャート コンポーネントの絞り込みを行う際に自問する必要がある質問には、次のものが含まれます。
- 現在および将来的に必要になるグラフの種類は何ですか? 縦棒グラフや円グラフなどの非常に基本的なグラフが必要な場合は、これらのライブラリのほとんどが適しています。ただし、Pareto や Funnel などの少し高度なグラフが必要な場合でも、ほとんどのコンポーネントはそのようなグラフを提供していません。
- グラフを最大数のデバイスと IE6 などの古いブラウザーでレンダリングすることは、どの程度重要ですか? 多くのオープンソース ライブラリは、レンダリングに SVG のみを使用しているため、IE6、7、8 をサポートしていません (世界の 6% がまだ使用しています)。
- デモ中にデータ視覚化を実装する製品の一部を USP として使用できますか? はいの場合、グラフ コンポーネントのルック アンド フィールはどの程度重要ですか?
- 基本的な機能のチャートを微調整するのにかなりの時間を費やすつもりですか? たとえば、多くのオープンソース ライブラリでは、追加のコードを記述する際にツール ヒントが有効になったり、グラフに 25 個を超えるデータ ポイントがある場合、x 軸のラベルの重なりに注意する必要があるという事実があります。それとも、アプリケーションとビジネス ロジックに集中できるように、これらの機能をそのまま使用しますか?
- 化粧品を含め、チャートのすべての機能をカスタマイズできることは、あなたにとってどれほど重要ですか? たとえば、チャートを 3D でレンダリングしたり、数値のフォーマット方法をカスタマイズしたり、グラデーションを制御したりできる必要がありますか?
- 簡単に開始できるように、完全なドキュメントと実際のビジネス デモを備えたコンポーネントが必要ですか、それとも、最小限のドキュメントと多くの時間がかかる可能性がある実験による学習で問題ありませんか?
- 何かが期待どおりに機能しない場合にパーソナライズされたサポートを受けることは重要ですか? それとも、公開フォーラムに投稿し、返信/修正のための SLA がなくても問題ありませんか?
この情報が Web アプリケーションのグラフ作成コンポーネントの選択に役立つことを願って、2 番目の質問に答えさせてください。エンドユーザーがグラフをデザインするためのクライアント側ウィザードが付属するコンポーネントはありますか?
クライアント側のチャート作成ライブラリの場合、簡単な答えは NO です。それは、クライアント側のライブラリを特定のサーバー側のテクノロジに結び付けてデータの永続性を確保するためであり、第二に、それを必要とするユーザーは多くありません。
チャートのすべての機能をクライアント側でカスタマイズできるわけではありませんが、一部のサーバー側ライブラリ (以前はこの機能を備えていた Dundas) はこの機能を提供します。
そうは言っても、多くの開発者は、技術者以外のユーザーが使用するためのウィザードを作成しています。たとえば、FusionCharts では、Collabion (www.collabion.com を参照) と呼ばれる SharePoint 用のウィザードと、oomfo (www.oomfo.com) と呼ばれる PowerPoint 用のウィザードを作成しました。これらはオープン ソースではありませんが、関連性があると思われる場合は、これらのコードを喜んで共有します。
もう 1 つのオプションは、チャート作成コンポーネントが組み込まれており、エンドユーザーにウィザードも提供するオープンソースの BI コンポーネント (Pentaho、JasperSoft など) を使用することです。ただし、ユーザーごとにかなりのサーバー リソースが必要になる可能性があり、インストールと保守に時間がかかります。
ご質問にお答えできたことを願っています。