少し前まで、私は些細な仕事に直面しなければなりませんでした-.NETのグラフィカルな図面をレンダリングできるソリューションを見つけるために。 すぐに線形グラフにしか興味がないという予約をしてください。 既存のソリューション(これらはrdlcレポートに組み込まれたグラフでした)のやり直しを促した障害は、スピードでした。 一般に、目的のソリューションに対して次の要件が作成されました。
- この最適化をエンドユーザーに気付かれないようにする必要があります。そのため、最終的にその前身と同じように見えるようにするために、ソリューションは広くカスタマイズ可能でなければなりません。
- 速く作業します(もちろん、ユーザーは待ちたくありません)。
- 無料またはオープンソースにすることをお勧めします。 優れた有料ソリューションが見つかった場合、購入は大きな問題にはなりませんが、オープンソースから始める方が良いでしょう。
何がされましたか?
グーグルでは、この問題を解決するための非常にいくつかのオプションがあり、それらのすべてが多くの点で非常に異なっていることがわかりました(コミュニティのサイズ、速度、利便性)。 ソリューションを選択する過程で、8つの無料オプションがテストされました。
- DisLin クロスプラットフォームライブラリ(UNIX、Linux、FreeBSD、OpenVMS、Windows、Mac OSX、MS-DOS)。 非常に強力で柔軟です。それについてのみ別の記事を書くことは本当に価値があります。 コードの読みやすさの点では競合他社よりわずかに劣る場合があります(従来の機能的アプローチを使用します)が、これにより、ほとんどすべての言語に簡単に移植できます。 C、C ++、Fortran 77、Fortran 90、Perl、Python、Ruby、Tgl、GCLのバニラ
ケーキポートがあります(C#のポート-インポートされた関数を含む通常のライブラリ)。 非営利使用の場合は無料です。
- Google Chart Sharp 。 C#用のGoogle Chart APIをラップします。 ハブにはすでに彼に関する記事があったので、簡単に言うと、無料(1日あたり50,000千回の呼び出しの制限付き)、非常にスマートに動作し、カスタマイズのための基本的なパラメーターがあります。 プラスの中には、インターネット接続があればどこでも使用できる機能、使用されている言語/ OSに依存しません。 メインのマイナスは、もちろん、ネットワーク上の追加の往復データ(サーバーでスケジュールが必要な場合)であり、プロセスが遅くなります。
- Microsoft Chartコントロール 2008年に一般公開されたMicrosoftのネイティブ機能。 その時までに、サードパーティの開発者からの多くのソリューションが既に存在していましたが、これはMs Chart Controlsが開発者の間で急速に人気を得ることを妨げませんでした。 そして、当然のことながら、それらは.NETフレームワークに付属し、優れたアーキテクチャを持ち、簡単にカスタマイズでき、見た目も魅力的でした。 それらは速度において他より劣りますが、それにもかかわらず、彼らはかなりうまく働きます。
- NPlot 。 別のオープンソースライブラリ。 確かに、最速で最も人気のあるものではありません。たとえば、Microsoft Chart Controlsほどではありませんが、インターネット上で情報を見つけることができます。 それにもかかわらず、彼女と遊んだ後、私はかなり楽しい後味を持っていました。
- OxyPlot 。 「ライブ」クロスプラットフォームオープンソース。応答する可能性のあるバグを報告することもできます。 NuGetでも利用できます。 WPF / Silverligth、WinForms、Metroには適切なコントロールがあります。 OpenXmlおよびPdfに直接エクスポートするなどの利点。 「分」ではないソリューションとそれを自分で修正する機能が必要な場合は、このソリューションが最適です。
- ZedGraph 。 また、「ライブ」オープンソース、OxyPlotの直接のライバルです。 サポートされているプラットフォームの数(Windowsのみ)とテクノロジ(WinFormsとASP .NETのみ)の点では劣りますが、非常に可愛く、最速の1つです。 「美しいスケジュール」だけが必要な場合に最適です。
- WebChart Microsoft Chart Controlsの無料の前身。 私の知る限り、2004年以降死んでいます。 他のソリューションと比較してわずかに悲惨な機能を備えていますが、他のソリューションとは多少の外部の違いがあるため、非常に便利です。
- OpenMinded 。 OpenMindedユーザーからの無料版。 きれいに見えます。 結果の描画をハードドライブ以外にレンダリングする機能が見つからなかったため、パフォーマンスを判断することは困難です。 しかし、プロジェクトは開いているので、誰でも自分で完成させることができます。これは問題ではないと確信しています。
最初に、できるだけ多くのオプションを1か所に集めて速度をテストする必要があると判断しました。その後、作業をバスケットに入れるのは非常に残念でした。 したがって、この小さな記事を作成し、何が起こったのかを
GitHubに投稿することが決定さ
れました 。 したがって、必要がある場合は、各ソリューションを自分用にカスタマイズし、すぐに確認できます。 個人的には、最初はそのような記事を見逃していました。 ソースコードは教祖に笑顔をもたらすかもしれませんが、.NETとASPだけを掘り下げる初心者にとっては、間違いなく非常に便利です。
作業速度を比較するために、チャートのデフォルト設定が取得され、出力画像の解像度が示され、固定数のポイントがそこに送られます。 各ソリューションは複数回実行され、平均が実際の速度として採用されます。 繰り返しますが、これは十分に主観的なものであり、より美しいアプローチを提供できる場合は、興味を持って聞きます。
私のPC(Intel Core I5 3.10 GHz、8GB RAM、Windows 7 x64)で、次の速度分布がリリースされました。
いや
| 解決策
| 反復回数
| 合計時間(秒)
| 反復あたりの平均時間(秒)
|
1
| 廃盤チャート
| 5
| 1.9071907
| 0.38143814
|
2
| Zedグラフ
| 5
| 2.750275
| 0.550055
|
3
| NPlot
| 5
| 3.1833183
| 0.63666366
|
4
| Webチャートコントロール
| 5
| 5.130513
| 1.0261026
|
5
| Microsoftチャートコントロール
| 5
| 6.8456845
| 1.3691369
|
6
| オキシプロット
| 5
| 7.0067006
| 1.40134012
|
7
| オープンマインドプロット
| 5
| 8.257
| 1.6514
|
8
| Googleシャープチャート
| 5
| 9.8049804
| 1.96099608
|
さまざまな入力パラメーター(画像解像度、グラフ上のポイント数、PCパラメーター、インターネット速度、ムーンフェイズなど)の結果はわずかに異なるため、自宅でパフォーマンスをテストできます。
これは、特定のタスクに大きく依存するかなり主観的な情報であるため、機能とカスタマイズ機能の詳細な比較は特に行いませんでした。 必要に応じて、誰もが30分を費やし、休憩を取り、ソリューションのアーキテクチャを見て、特定の要件に合わせてカスタマイズすることがいかに簡単かを理解できます。
他の誰かが記事にない無料の.NETグラフィックスソリューションを知っている場合は、コメントを書いて、それらを追加しようとします。
upd-(OpenMindedからソリューションを
追加 )
upd2-(投票にDevExpressを含めた)