質問

私たちは現在取り組んでいる新しいプロジェクトのための代替制御ライブラリを調査しています。要件の 1 つは、以下の ComponentOne チャートのように、データを表面マップの形式で表示することです。

alt text

私たちは過去に C1 コントロールを使用したことがありますが、それに完全に満足しているわけではありません。そのため、誰かがいくつかの代替案を共有できないか疑問に思っています。

見つけるのに少し苦労したので、すべての助けに感謝します。

注意:これは .NET 3.5 WinForms アプリケーションです

役に立ちましたか?

解決

探しているチャートのタイプを持っているいくつかの商業プロバイダーは次のとおりです。

  1. ChartFX for .NET - 3Dサーフェスを含む利用可能なチャート
  2. .NETのNevron Chart -利用可能な表面チャート

他のヒント

すでにこれに出くわしたかもしれませんが、CodeProjectの記事 3Dサーフェスをプロット 。その機能セットが要件に十分かどうかはわかりませんが、まだ行っていない場合は調査する価値があります。明らかな利点は、それが無料でオープンソースであることです(したがって、特定のニーズに合わせて拡張できます)。

スクリーンショットの例:

合理的に完全に見える別の可能な代替手段は、 F#for Visualization ライブラリです。 。これは商用ですが、見た目では、必要なものをもっと実行できます。 F#向けに設計されているという事実に惑わされないでください- C#から直接使用する必要があります(または、多少の相互運用性を使用して、物事をきれいにする必要があります)。確かに、C#が提供する関数型プログラミングのサポートにより、作業は比較的簡単になります。

スクリーンショットの例:


(ソース: ffconsultancy.com

最初の(CodeProject)オプションを提案しましたが、これはたまたまあなたの要件に合っている場合ですが、そうではないかもしれません。 F#のものはほぼ間違いなく十分でしょう。 F#は関数型言語であり(したがって、通常は数学および科学アプリケーションに使用される)、グラフプロットに関連する機能の優れたオプションである可能性が高いことに注意してください-プロットするプログラムの部分を書くことを検討することもできます言語、特に比較的複雑になる場合。

役立つこと。

C#/。NET framework / etcを使用したことがないため、私のビジネスではないかもしれませんが、それはマトリックスのメッシュプロットのように見えます。

Uniで Octave を紹介しました。パッケージの中で、マトリックスをメッシュプロットすることができました。 Octaveがプロットに使用するパッケージは GNUPlot です。それを.NET 3.5にフックできるのであれば、それはあまり役に立たないかもしれませんが、それは仕事です外観

 octave mesh plot
(ソース: network-theory.co.uk

あなたがそれをどれだけ使いたいかに応じて、多くのオプションがあり、3Dグラフィックスでさまざまな作業を行い、過去に広範囲に調査しました 以下に、開始に役立つリンクをいくつか示しました

これが役立つことを願って

以前に他のWinFormsチャートにNevronを使用しましたが、それらは素晴らしかったです-製品は機能し、テクニカルサポートは本当に役に立ちました。

それらは表面グラフを行うようです(少なくとも私が理解している限り): www.nevron.com/Gallery.ChartFor.NET.ChartTypes.GridSurfaceChartGallery.aspx www.nevron.com/Gallery.ChartFor.NET.ChartTypes.MeshSurfaceChartGallery.aspx www.nevron.com/Gallery.ChartFor.NET.ChartTypes.TriangulatedSurface.aspx

(適切なリンクを作成しようとしましたが、私は新しいので、複数のリンクを挿入することはできませんでした)

http://www.obacs.com のScinet Chartを使用することをお勧めします。かなり多くのチャートオプションがあり、他の選択肢に比べてはるかに安価です。

ネブロンに関しては注意が必要です。過去 5 年間、Enterprise BI アプリケーションのすべてのグラフ作成にこれらを使用してきたため、豊富な経験があります。

ネブロンには好きなところがたくさんあります。

  • チャートは素晴らしく見えます
  • APIはかなり優れています
  • チャートの種類はたくさんあります
  • 価格は適切です(Dundasなどの多くの競合他社よりも安いです)
  • 技術サポートは非​​常に充実しており、通常は開発者に直接メールを送信すると、良い返答が得られます。要件にある程度の情報を提供する準備ができている場合は、喜んで新しいチャート タイプを追加します。彼らは私のために素晴らしいベン図コンポーネントを構築してくれました:)

ここまでは順調ですか?私にとって最大の要因は、スイートの新しいバージョンがリリースされるときに伴う苦痛に違いありません。チャートには Nevron を、UI コンポーネントには Infragistics を使用しています。通常、アプリケーションを Infragistics の新しいバージョンにアップグレードするには半日かかります。新しい Nevron のアップグレードには最大 4 週間かかる場合があります。

彼らはオブジェクト モデルを何度も変更し、インターフェイスの互換性を破り、物事のやり方を変えたという実績を持っています。ネブロンのアップグレードを実行するたびに恐怖を感じます...

警告のもう 1 つの言葉は、軸のラベル付けの処理にはまだ望ましくない点がたくさんあるということです。私は、軸ラベルの見栄えを良くするために多くの時間を費やしてきました。このサポートはここ数回のリリースで改善されましたが、まだ実現していません。

Software Siglo XXI Super 2d / 3d Graph Library を検討することをお勧めします。 (ロイヤリティフリーであり、非常に安価です)。

サンプルコード:

Imports Super2d3dGraphLibrary
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  Dim sf As New SeriesFactory
  Dim x, y, z As Integer
  For x = 0 To 100 Step 5
    For z = 0 To 100 Step 5
      y = 30 - Math.Sqrt((x - 50) * (x - 50) + (z - 50) * (z - 50)) + Rnd() * 5
      If y < 0 Then
        y = 0
      End If
      sf.AddPoint(x, y, z)
    Next
  Next
  sf.GenerateMesh()
  With Super2d3dGraph1
    .LicenseeIdentifier = "PROF"
    .Title = "Surface chart from random X/Y/Z points"
    .Style = Super2d3dGraphLibrary.STYLE2D3D.STYLE3D_XYZ_SURFACE_TRIANGLE
    .BackStyle = STYLEBACKGROUND.STYLEBACKGROUND_GRADIENT
    .ShowXAxis = True
    .XAxisTitle = "X-Axis"
    .XAxisScaleMaximum = 100
    .XAxisScaleMinimum = 0
    .XAxisScaleMode = SCALEMODE.SCALEMODE_FIXED
    .XAxisNumericFormat = "0"
    .ShowDividersX = True
    .ShowYAxis = True
    .YAxisTitle = "Y-Axis"
    .YAxisNumericFormat = "0"
    .ShowZAxis = True
    .ZAxisTitle = "Z-Axis"
    .ZAxisScaleMaximum = 100
    .ZAxisScaleMinimum = 0
    .ZAxisScaleMode = SCALEMODE.SCALEMODE_FIXED
    .ZAxisNumericFormat = "0"
    .ShowDividersZ = True
    .ShowLegend = False
    .ShowValues = False
    .ShowDataTable = False
    .SurfaceBrushStyle = New SolidBrush(Color.LightGreen)
    .SurfaceBrushMinBrightness = 30
    .SeriesLineStyle = New Pen() {New Pen(Color.Black)}
    sf.ApplyTo(Super2d3dGraph1)
  End With
End Sub
End Class

リンクは次のとおりです。 スーパー2d / 3dグラフライブラリ製品ページ

ILNumerics に言及せずにこのリストを完成させるにはどうすればよいですか?

免責事項:ILNumericsチームで働いているという偏見があります。しかし、視覚化エンジンは、今日利用可能な最も柔軟で最速の表面プロットをもたらします。これがお客様の声です。あなたは無料で自分自身を試すことができます-私たちのウェブサイトで直接でも。

編集:ILNumericsの表面プロットの非常に簡単な設定は、次のように達成されます。

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

var scene = new ILScene() {
  new ILPlotCube(twoDMode: false) {
    // we could define concrete data as matrix here. But for now
    // we go with an analytic expression instead: 
    new ILSurface(
      (x, y) => (float)(Math.Sin(x) * Math.Cos(y) 
                * Math.Exp(-(x * x + y * y) / 46)),
       colormap: Colormaps.Flag) // { new ILColorbar() }
  }
};

すべてのシーンは、シーングラフの単純なオブジェクトで構成されています。すべてを変更および制御できます。これは科学データに特化しています。この例をオンラインで変更してみてください:

http://ilnumerics.net/ilcc.php?ilc=ia13490

過去 Dundas Chart に非常に満足しています-ニーズに合っているかどうかを確認できます。

次のことも試してください:

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top